Rails関連のことを調べてみた2022年08月10日

Rails関連のことを調べてみた2022年08月10日
目次

ENVの意味がわからなかったけど調べたら簡単だった。

はじめに

githubで有名なgemのコードを読んでみると、全く知らない文字列が羅列していて、そもそもどんな風にコードを読めばいいかわからないと言うことを何度も経験しました。
プログラミングを始めたばかりは(まだまだ初学者ですが。。)わからないものが羅列していると何が何やら訳が分からなくなり、単純に恐くて手をつけたくないと思ってしまっていました。
でも一つ一つの単語を調べて理解が少しできると怖さが激減するんだな、ということを経験の中で知ることができました。

少しでも疑問に感じたことはそのままにせず調べて、備忘録としてアウトプットをしていこうと思います。

ENV.fetch(“~”)の文字列が怖かった

現在ポートフォリオを作成している中で、twitter apiを使ってtwitterのアカウントでログインができる機能を実装しています。

その機能のためにネットの記事を参考にしていた際に、下記のコードが出てきました。
~~~
ENV.fetch(”TWITTER_KEY”)
~~~
いつもコードを書くときは大抵小文字なのに、ENVは大文字と言うだけで少し怖っ、、と思ってしま

元記事を表示

【Rails】コントローラ作成方法メモ

## 0. 環境
macOS Monterey 12.3.1
ruby 3.1.2
rails 6.1.6

## 1. コントローラ作成方法

以下のコマンドを入力する。

“`bash:ターミナル
rails g controller (コントローラ名) (アクション名1) (アクション名2)…
“`
作成例

“`bash:ターミナル
rails g controller users index show
“`

## 2. 特定のディレクトリ下に作成する時

コントローラ名にパスを付けて入力する。

“`bash:ターミナル
rails g controller api/v1/users index show
“`

または

“`bash:ターミナル
rails g controller api::v1::users index show
“`

## 3. 作成コマンドを取り消したい時

`g(generate)`を`destroy`に置き換える。

“`bash:ターミナル
rails destroy controller users index s

元記事を表示

【入門】データベース設計まとめ

## はじめに

今回はデータベース設計について学び直したので内容をまとめていきます。

自分は2021年に新卒でWeb系の開発会社にフロントエンジニアとして入社し2022年で2年目になります。

実務では**Next.js×TypeScript**を利用したフロントの開発をメインで行っています。

直近の開発案件で**Rails**を使ったサーバーサイドの開発を担当することになり、DB設計を触ったのですが体系的な理解をしていなかったので苦戦をしました。

実装はできたものの、データベース設計を「**なんとなくの理解**」で終わらせないように、体系的に学び直しました。

データベース設計の学習に関しては下記の書籍を参考に進めました。

– [スッキリわかるSQL入門](https://www.amazon.co.jp/dp/4295013390/ref=as_sl_pc_as_ss_li_til?tag=sutabaopen-22&linkCode=w00&linkId=b6412edf27bcf35bf1c290b7854f0013&creativeASIN=4295013390)

元記事を表示

【Rails】Action Mailerのプレビュー時に発生したエラーの解決方法

## 環境

OS: macOS Bir Sur
Ruby: 3.1.2
Rials: 7.0.3.1
rspec-rails: 5.1.2

## 発生した問題

Railsチュートリアルの11章を進めていた際、Action Mailerのプレビューコードを実装後に「[http://localhost:3000/rails/mailers/user_mailer/account_activation](http://localhost:3000/rails/mailers/user_mailer/account_activation)」を確認した際に「Unknown action **Mailer preview ‘user_mailer/account_activation’ not found**」というエラーが発生した。

## 原因と解決方法

原因はテストをデフォルトで使用されるminitestではなく、RSpecに変更したこと。
「rails generate mailer コントローラ名 アクション名」を実行した際に、デフォルトでは、*test/mailers/prev

元記事を表示

【Webアプリ】個人開発したWebアプリを公開

皆さんに使っていただきたく、こうして個人制作したWebアプリを公開します。是非フィードバックをいただけるとありがたいです!

# 概要
気軽に議論するためのプラットフォーム「yes or no」を作りました。議題を整理しながら、討論できるTwitterのようなものをイメージして下さい。yes or noにおいては、議題に対して賛成・反対のポジションを取ることでコメントの投稿をすることができます。
![スクリーンショット 2022-08-10 1.35.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2707093/5e7270da-0b27-e698-645b-53ce8d080b2e.png)
誰かが立てた議論には時間制限があり、それを過ぎるとコメントすることができません。
議題の作成やコメントにはユーザー登録が必要になります。
ユーザー登録する際のEmailですが、@を含めているのならどのような文字列でもいけます。忘れなければ問題ありません。

# URL
Webアプリ「yes or no」のU

元記事を表示

Rails7でSvelteを使えるようにする

Rails7でSvelteを使う方法ってないのかな?と探していたんですが、全く見つからなかったので自分で試行錯誤した記録をここに記します。

やったことの軌跡がわかるようにPRを作ってありまして、基本このコミットの通りにやれば使えるようになるはず。

https://github.com/yuki-noguchi/svelte-rails7/pull/1

# 手順

## rails newする
このとき、`-J`や`-j`オプションをつけて、javascript関連のファイルは生成されないようにしたほうが良いかもです。
後述しますが、`vite_rails`を使用するので、生成されるjavascript関連のファイルが邪魔になるかもです。
自分は`–minimal`をつけちゃいました。

## ‘vite_rails’を追加する

Gemfileに以下を追記して、

“`
gem ‘vite_rails’
“`

bundle install実行。

“`shell
bundle install
“`

さらに、初期化コマンドを実行。

“`
bundle exec v

元記事を表示

【Rails】ActionMailerでお問合せフォームを作ろう!!

# はじめに
お問合せフォームをActionMailerを使って実装する方法を調べ、実装した。

**完成予想図**
以下のようなものを作る。
①お問合せフォームの作成
![スクリーンショット 2022-08-09 22.46.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2684787/b96d1935-4119-26e2-bcca-33416e39bbc6.png)
②確認画面の作成
![スクリーンショット 2022-08-09 22.46.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2684787/8b1bb9c0-bf79-b113-c6af-a7f32dfa9f32.png)
③送信後、ホームへリダイレクト
![スクリーンショット 2022-08-09 22.43.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0

元記事を表示

[Rails6系] auth0を使用したSNSログイン機能をHerokuにデプロイするまで

### 前提
記事を書いている私は現役のエンジニアではなくエンジニアを目指して学習中の者です。
よって、気をつけてはいますが記述内容には誤った内容が含まれている危険性があります。
その為この記事は参考程度に読んで頂き詳しい内容は公式の記述を参考にすることをおすすめします。

### この記事で実装すること
auth0とdeviseを使用してRailsアプリで簡単にSNSログインができる機能を実装し、Herokuにデプロイするまでの手順を説明します。
deviseを使用してユーザーの新規作成ができるRailsアプリがあることを前提に進めていきます。

### 使用技術
Ruby 3.1.2
Rails 6.1.6
Heroku
Deviseでユーザー新規作成機能実装済み

### 実装手順
auth0への登録からRailsアプリへの連携までについても説明しますがこの辺については以下のQiita記事や公式のチュートリアルがとても分かりやすいので参考にして下さい。
[公式のチュートリアル](https://auth0.com/docs/quickstart/webapp/rails/int

元記事を表示

ruby on rails を AWS Cloud9で実施 5 QandAサイト作成 バリデーション追加まで

https://qiita.com/TaichiEndoh/items/35294ff656499d9bbf8d

https://qiita.com/TaichiEndoh/items/9c19319df04a279403a3

https://qiita.com/TaichiEndoh/items/057d35eff8cadbd434ba

https://qiita.com/TaichiEndoh/items/522e956d569e5bbd7b8d

# 前回の続きでQandAサイト作成します

環境 AWS Cloud9
environment type EC2
instance type t2.micro
platform ubuntu server 18.04 LTS

## 質問の編集機能を実装

まずはviewの表示を変更します

app/views/questions/edit.html.erb
を作成します

“`app/views/questions/edit.html.erb

Edit

<%= form_with model: @qu

元記事を表示

【ポートフォリオ作成2日目】githubのissue活用とrspecのセットアップ

# 概要
– githubのissue機能を使ってタスク管理をする。
– rspec(Ruby用のテストフレームワーク)を使ってTDD(テスト駆動開発)を行うための準備をする。
# githubでタスク管理
– [GitHubのissueを活用した個人アプリの開発手順を書いてみた](https://qiita.com/tkmd35/items/9612c03dc60b1c516969)
– [Githubにissueのテンプレートを作成する方法](https://note.com/koushikagawa/n/n0dcc592d3045)
# rspecのセットアップ
– [rspecをgemでインストール](https://zenn.dev/fu_ga/books/ff025eaf9eb387/viewer/f2c0c9)
# 参考
– [使えるRSpec入門・その1「RSpecの基本的な構文や便利な機能を理解する」](https://qiita.com/jnchito/items/42193d066bd61c740612)
– [Everyday Rails – RSpecによるR

元記事を表示

【Railsチュートリアル】しょっぱなからバージョンを間違えた話

どうもこんにちは
先日Railsチュートリアルを始めたtaku3ukatです。

Railsチュートリアルではver.6.0.4を使い、以下コマンドで指定します。

“`
rails _6.0.4_ new (任意の環境名)
“`
ただrailsのバージョン確認をすると6.0.5.1と表示されるではありませんか…

#### とりあえずRails 6.0.5.1を消してみる。
“`ruby:削除コマンド
gem uninstall railties -v ‘6.0.5.1’
“`

“`ruby:削除結果(ターミナル)
You have requested to uninstall the gem:
railties-6.0.5.1

rails-6.0.5.1 depends on railties (= 6.0.5.1)
If you remove this gem, these dependencies will not be met.
Continue with Uninstall? [yN] y
Successfully uninstalled

元記事を表示

【ポートフォリオ作成1日目】開発環境とrailsアプリケーション作成

# 概要
Webエンジニア転職用のポートフォリオ作成の過程を記録する。
[Ruby on Rails チュートリアル](https://railstutorial.jp/)を1週した後のレベル感。
– PC:M1 MacBook Pro
– エディタ:Visual Studio Code
– ターミナル:iTerm
# rubyのインストール
– [homebrewでanyenvをインストール](https://brew.sh/index_ja)
– [anyenvでrbenvをインストール](https://github.com/anyenv/anyenv)
– [rbenvでrubyをインストール](https://github.com/rbenv/rbenv)
– [(参考)PATHを通すとは? (Mac OS X)](https://qiita.com/soarflat/items/09be6ab9cd91d366bf71)
# railsアプリケーションの作成
– [gemでrailsをインストール](https://guides.rubyonrails.org/gettin

元記事を表示

【Rails】joinした先のテーブルで昇順降順のソートもしたい

## bad

joinした先のテーブルでソートする場合

“`ruby
User.eager_load(:posts)
.order(‘posts.title’)
“`

という例をよくみるが、これだと文字列を使う&昇順・降順のソートができない。

## better

“`merge“`を使うことでjoinした先のテーブルで昇順・降順のソートができる。

“`ruby
User.eager_load(:posts)
.merge(Post.order(title: :asc))
“`

## 参考

https://railsdoc.com/page/model_order

https://qiita.com/shshimamo/items/bd8150598cf2a157b980

元記事を表示

記事作成テンプレート

“`
# 概要
– [リンクテキスト](URL)
– [リンクテキスト](URL)
# 1
– [リンクテキスト](URL)
– [リンクテキスト](URL)
# 2
– [リンクテキスト](URL)
– [リンクテキスト](URL)
# 参考
– [リンクテキスト](URL)
– [リンクテキスト](URL)
“`

元記事を表示

docker-compose buildで You must use Bundler 2 or greater with this lockfile.エラーが出る

docker-compose buildをしたときにエラーが発生したため備忘録として残しておきます。
ググってみてもよくある解決策で解決しなかった人のためになれば幸いです。

“`ruby:Dockerfile
FROM ruby:2.5.1

RUN apt-get update -qq && \
apt-get install -y build-essential \
nodejs\
mariadb-server\
mariadb-client

WORKDIR /portfolio

COPY Gemfile /portfolio//Gemfile
COPY Gemfile.lock /portfolio//Gemfile.lock

RUN gem install bundler
RUN bundle install

RUN mkdir -p tmp/sockets
“`

この状態でdocker-compose buidを実行すると以下のエラーが発生。

“`
=> ERROR [7/8] RUN bundle install

元記事を表示

FargateでRails, ALB, RDS, CodeDeploy(Blue/Green), Github Actionsで自動更新

# Fargate with Rails
![architecture.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/268079/4a3427ac-fe44-6860-0545-28c85dc32d6b.png)

## 作成したもの
[レポジトリ](https://github.com/the1031hiroto/ecr)

1. ALB(PublicSubnet1 & 2), Fargate(PrivateSubnet1 & 2), DB(PrivateSubnet1 & 2)それぞれにセキュリティグループを作成してサクセスを制限
2. Fargate(Blue/Green Update)
3. Github Actions(deploy)
1. Docker Image build
2. ECRにプッシュ
3. Fargateのタスク定義作成
4. Blue/Green Update
4. deploy_stack.sh(CloudFormation用)

###

元記事を表示

ruby on rails を AWS Cloud9で実施 4 QandAサイト作成 バリデーション追加まで

https://qiita.com/TaichiEndoh/items/35294ff656499d9bbf8d

https://qiita.com/TaichiEndoh/items/9c19319df04a279403a3

https://qiita.com/TaichiEndoh/items/057d35eff8cadbd434ba

具体的な説明は上記を確認願います

環境 AWS Cloud9
environment type EC2
instance type t2.micro
platform ubuntu server 18.04 LTS

# QandAサイト作成

## 新規プロジェクト作成

今回もバージョンを指定して立ち上げたいので

“`
rails new qanda _7.0.0_
“`
qanda プロジェクトが確認できます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2629668/50ae80c6-6006-a0ff-fb68-59c8

元記事を表示

Rails6 rakutenAPI 公式documentを見ながら実装

## 初めに
今回この記事では、簡単にgemを用いてruby on railsでrakutenAPIを叩き、データを取得する方法を解説していこうと思います。
rakutenAPIの記事はかなり溢れているのですが、APIkeyを扱うのに直接initilizerに貼り付けたりや、公式のリンクが期限切れになっているものが多かったので書かせていただきました。

### 環境
– ruby
– 3.1.2(rbenv) <- 2.7以上であればOK - rails - 6.1.6.1 <- 6系であれば同じ ## 実装手順 - APIkey取得 rakuten developersにアクセス [こちら](https://webservice.rakuten.co.jp/)にアクセス 右上のログインからrakutenの会員情報を使ってログインする。(通常の楽天アカウントでok!) ログインできたら、右上の+new appをクリック ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.c

元記事を表示

速度改善のためRailsコードをGoで書き直して、FFIを使ってみた

railsのコードをgolangに書き直したら、10倍早くなりました
===================================

ffiでgoを呼び出すようにすると早くなるという記事を見たので、

実際に使用してみたら、本当に10倍ほど早くなりました。

## ディレクトリ構成
今回はrailsなのでlib配下にffiディレクトリを用意して、その中にソースコードをおきました。

+ /app
+ /models
+ test.rb
+ /lib
+ /ffi
+ sample.rb
+ .directory-list.md
+ /src
+ sample.go
+ /model
+ data.go
+ /bin
+ sample.so

## 事前準備

ffiのgemを入れておく
“`
gem install ffi
“`

go.mod ファイル作

元記事を表示

Active Recordについて

# Active Recordとは
簡潔に言うと、SQLをRubyに翻訳したもの。
MVCのM(モデル)がデータベースのデータを扱う際、本来であればSQL文でクエリを発行するが、RailsにはActive Recordのお陰で、Rubyでデータベースを操作することができる。
また、SQLではDBシステムによって互換性があるが、Active Recordでは、DBシステムの種類に関わらず、同じ記法が使えるのもメリットの一つ。

# CRUD処理でよく使うメソッド
自身が現在CRUD処理の実装を復習しているので、Create(作成)、Read(参照)、Update(更新)、Delete(削除)の流れでよく使うメソッドをまとめていきます。

# Create(生成)でよく使うメソッド
“`ruby
@user = User.new(name: “山田”, age: 22)
# userモデルのインスタンスの作成 DBには保存されない

@user.save
# 上記のnewで作成したインスタンスをDBに保存

@user.create(name: “山田”, age: 22)
# インスタ

元記事を表示

OTHERカテゴリの最新記事