Rails関連のことを調べてみた2020年05月24日

Rails関連のことを調べてみた2020年05月24日

EC2でデプロイした本番環境にELBを使ってssl化をする際の詰まったところ・注意点

下記URLを参考にELBを設定したのですが10日ほどつまづいたのでメモします.
https://recipe.kc-cloud.jp/archives/11084

##一番簡単なパターンのELB(+ACM発行証明書)→EC2の形

初学者はとりあえず一番簡単なパターンのELB(+ACM発行証明書)→EC2の形でssl化を行うのが良いかと思います。

構成は次の通り。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/568461/b19ccdd6-fc19-79bc-70b9-d21abc871b93.png)

##注意点

###ACMで証明書を発行する際に入力するドメイン名はアプリ名.confに書いたドメイン名と同じにする必要がある。
つまり、取得したドメイン名はaaaa.comだけど、アプリ名.confにwww.aaaa.comと書いたらACMの方にもwww.aaaa.comをつける必要があります。

ACMで証明書を発行するドメイン名とnginx周り&Route53周りのドメイ

元記事を表示

【Railsチュートリアル】第2章にあるGitのこと

——————————–

# はじめに

この記事では[Rails チュートリアルの第2章](https://railstutorial.jp/#toc)
についてまとめた記事です。
ベストプラクティスや間違いがあれば
チュートリアルをやりながら書き直していく予定です。

# 今回知ったこと

・データモデルを作成できる。
・データモデルを作成するときはscaffoldジェネレータを使う。
・データモデルを作成したらマイグレーションを必ず行う。
・データモデルはModelsにhas_manyとbelongs_toを使うことで関連付けできる。

・Railsにはルーティングという仕組みがある。
・ルートURLにアクションを指定すると表示するページを操作できる。
・modelsを編集することで簡単な入力のサニタイズが可能

# データモデルを作成

データモデルを作成するときはscaffoldジェネレータを使う。

“`
nameカラム,emailカラムをもったUserというデータモデルを作成する。
rails generate scaffo

元記事を表示

Ruby on rails を初心者向けに解説⑦ ~フラッシュの実装~

#はじめに
今回は以前の記事の続きになります。

よろしければ、以前の記事も御覧ください。

今回はフラッシュについてまとめていきます。

[Ruby on rails を初心者向けに解説①](https://qiita.com/renesisu727/items/c81e29c619dbd4b5ea76)

[Ruby on rails を初心者向けに解説② ~リンクの作成~](https://qiita.com/renesisu727/items/d729616473981e763fdd)

[Ruby on rails を初心者向けに解説③ ~データベースの作成~](https://qiita.com/renesisu727/items/c647582a59cfd7bf0a98)

[Ruby on rails を初心者向けに解説④ ~命名規則とform_Tagの使い方について~](https://qiita.com/renesisu727/items/f0f3de5377358f8768ed)

[Ruby on rails を初心者向けに解説⑤ ~データベースの編集と削除~]

元記事を表示

Ruby on rails を初心者向けに解説⑥ ~バリデーションの作成~

#はじめに
今回は以前の記事の続きになります。

よろしければ、以前の記事も御覧ください。

今回はバリデーションについて学んでいきましょう。

[Ruby on rails を初心者向けに解説①](https://qiita.com/renesisu727/items/c81e29c619dbd4b5ea76)

[Ruby on rails を初心者向けに解説② ~リンクの作成~](https://qiita.com/renesisu727/items/d729616473981e763fdd)

[Ruby on rails を初心者向けに解説③ ~データベースの作成~](https://qiita.com/renesisu727/items/c647582a59cfd7bf0a98)

[Ruby on rails を初心者向けに解説④ ~命名規則とform_Tagの使い方について~](https://qiita.com/renesisu727/items/f0f3de5377358f8768ed)

[Ruby on rails を初心者向けに解説⑤ ~データベースの編集と削

元記事を表示

Rails でセッションを特定のコントローラだけ無効にしたいとき

# 概要
クッキーを使ったセッションを特定のコントローラだけ無効にしたいときがあります。

例えば、管理画面Aでは active_record_store でセッション管理をしており、
管理画面Bでは devise token auth でセッション管理をしているときなどです。

この場合、管理画面Aでのみセッション管理が働いて欲しいのに、管理画面Bでも active_record_store によって
sessions テーブルにセッションデータの書き込みが発生してしまいます。

# 対策
セッションを無効にしたいコントローラーで下記の処理を記載すればOKです。

“`
request.session_options[:skip] = true
“`

参考
https://stackoverflow.com/questions/33318060/how-do-i-prevent-rails-from-creating-a-session

元記事を表示

Rails の routing で namespace, module, scope, as の違い

# 概要
routing を書くときに紛らわしいメソッドをまとめました。

# ルーティングの各名称
“`
resources :users

名前付きルーティング パス ディレクトリ
↓ ↓ ↓

Prefix Verb URI Pattern Controller#Action
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#

元記事を表示

rails で特定のカラムの確認の仕方

最近オリジナルアプリを作る中で、モデル内のカラムを効率よく検索する方法を探していました。

“`ruby

#コンソールを開く
$ rails c

“`

“`ruby
#調べたいモデル
User.columns
“`

こっちの方が、わかりやすい。

“`ruby
User.column_names
“`

これから沢山お世話になりそう。

元記事を表示

ActsAsTaggableOn 日本語訳

このプラグインは、もともとJonathan VineyによるActs as Taggable on Steroidsに基づいていました。その時点から大幅に進化していますが、多くの人々が使用していた最初のタグ付け機能はすべて彼の功績です。

たとえば、ソーシャルネットワークでは、スキル、興味、スポーツなどと呼ばれるタグがユーザーにある場合があります。タグを区別する実際の方法はないため、このタイプの実装は、ステロイドでタグ付け可能として機能することはできません。

「タグ付け可能として機能」を入力します。特定のキーワード(つまりtags)に機能を結び付けるのではなく、タグ付け可能として機能し、ステロイドが使用されたのと同じ方法でローカルまたは組み合わせて使用​​できる任意の数のタグ「コンテキスト」を指定できます。

取り付け
これを使用するには、Gemfileに追加します。

gem ‘acts-as-taggable-on’, ‘~> 6.0’
and bundle:

bundle
インストール後
移行をインストールする

#最新バージョンの場合:
rake acts_as_tagg

元記事を表示

ReactとRailsを同一サーバーで動かす方法

##経緯
Railsの学習を始めるに当たって、 ERBを利用したVIEWでフロント側を構築していたが、
最近はSPAというものが流行っていると小耳に挟んだ。

とりあえずチャレンジ!
ということでReactの学習を並行して進めていたが、、、
これどうやってデプロイするんだ。。。

となってしまいました笑

とりあえず別サーバーで動かすことにしてCORS制約などもなんとなくクリアして無事にRailsとReactのやりとりが可能になった。

しかし、ReactとRailsを利用したアプリ関係の記事を漁っていると、同一サーバーで動かしているものを多数発見!!!
何回かチャレンジしたものの上手く行かず断念。。。

しばらく時間が過ぎ、この土日に絶対動かしてやる!!! と執念で参考記事を探しまくった結果、
Heroku公式のBlogにわかりやすい記事があり、やっと構築ができました笑

同じような人がいたら参考になれば良いなと思い投稿するに至りました!

##前提条件
– Heroku blogの記事から必要最小限の部分だけ引用したものになります
– Ruby、Rails、Node、npm

元記事を表示

100日後に1人前になる新人エンジニア(3日目)

#100日後に1人前になる新人エンジニア(3日目)
どうもこんばんは。
土曜日でもめげずに学び更新していきます。

今日は本屋にいって書籍を買ってきました。
「Ruby on Rails 速習実践ガイド」 です
コツコツとやっていきたいと思います。

##本日のお題は
・ REST
・Ruby製のテンプレートエンジンslim

以上の二つです。全然違うテーマだけど自分がよく分かっていないと
思っていたところなので書いていきます。

##REST

Railsをやるようになってから「この設計はRESTfulだとか」,「RESTらしい」
という言葉を書籍等でよく見るようになった。
でもよく考えたらRESTについてしっかり分かっていないなと思ったので
土曜日を使って学んでみた。

##RESTとは

次の6つを組み合わせたWebのアーキテクチャスタイルのこと

– **クライアント/サーバ**
– クライアントがサーバーにリクエストを送り、サーバーはそれに対してレスポンスを返す
– **ステートレスサーバ**
– クライアントのアプリケーションの状態をサーバーで管理しない
– **キャ

元記事を表示

ElementClickInterceptedErrorについて

#前提
Selenium利用時のトラブルシューティングのごく一部について書きます。

#本題
フラッシュメッセージのテストを行うとエラーが発生

#エラー内容

“`
1) Dishes 料理詳細ページ 料理の削除 削除成功のフラッシュが表示されること
Failure/Error: click_on ‘削除’

Selenium::WebDriver::Error::ElementClickInterceptedError:
element click intercepted: Element 削除 is not clickable at point (393, 91). Other element would receive the click:

元記事を表示

Railsでとにかくログイン機能を作る

## とにかくログイン機能を作りましょう
Railsを用いたWEBアプリケーションでログイン機能を作るためだけの記事です。
これを体に覚え込ませて爆速で作れるようになっちゃいましょう!

## アプリの雛形を作る
これを作らないと何も始まりません!ターミナルから以下のコマンドを実行しましょう。

“`
% rails _5.2.3_ new アプリ名 -d mysql
“`
上記のコマンドによりアプリの雛形ができたらアプリのディレクトリに移動しましょう。

“`
% cd アプリ名
“`

## deviseのインストール
エディタでGemfileを開き、deviseを追加します。
deviseとは、ユーザー認証に必要な機能を簡単に作れるようになるgemのことです。
また、今回は私の好みでerbではなくhamlを使うのでerbファイルをhamlに変換するgemもインストールします。

“`
gem ‘devise’
gem “haml-rails”
“`
Gemfileにdeviseを追記したらインストールします!

“`
% bundle install
“`
インス

元記事を表示

【備忘録】Rails6 Devise + cancancan の使い方

##はじめに

deviseを使用してUserモデル(認証)を作成後して
cancancanを追加して認可をできるようにしました。

その過程を備忘録としてログします。

deviseのgemを追記します。

“`Gemfile



gem ‘devise’

“`

バンドルインストールします。

“`
$bundle install
“`

デバイスをインストールします。

“`
$rails generate devise:install
“`

設定があるか確認します。

“`config/environments/development.rb


config.action_mailer.default_url_options = { host: ‘localhost’, port: 3000 }
“`

page#indexを追記します。

“`config/routes.rb
Rails.application.routes.draw do
root to: “page#index”


end
“`

以下を追記します。

元記事を表示

Google Books APIから情報を格納するモデルを作り、直感的な扱いとテストを可能にする

## 対象読者

– 本に関するRailsポートフォリオを作る方
– Google Books APIを用いたRailsポートフォリオを作る方

## 本記事の到達物

#### Google Books APIのIDから情報を取得し、クラスに格納する

“`ruby
pry(main)> @google_book = GoogleBook.new_from_id(‘c1L4IzmUzicC’)

pry(main)> @google_book.title
=> “Practical Rails Plugins”

pry(main)> @google_book.authors
=> [“Nick Plante”, “David Berube”]

pry(main)> @google_book.image
=> “http://books.google.com/books/content?id=c1L4IzmUzicC&printsec=frontcover&img=1&zoom=5&edge=curl&imgtk=AFLRE73ENsMYFOfY27vluLqgI1cO-b80l

元記事を表示

[Ruby]getとpostの違い

Rubyのルーティングの中にgetとpostがあります。
その違いは何なのかを説明していきます。

get:
データベースを**変更しない**アクション

post:
データベースを**変更する**アクション

非常にシンプルです

元記事を表示

Rails+Webスクレイピング+DockerのアプリをEC2で立てようとしたら、デフォルト設定だとt2.small(2GB)とかが必要になりそう

※情弱なのでデフォルトのメモリ設定をしてしまってますが、もしかしたらDockerのメモリ割り当てをうまくやればもっと小さいサイズでいけるかもしれません。

# 概要
dockerでWebサイト(Rails + Webスクレイピング)をAWSのEC2で立てたいと思っていたんですが、自分しか使わないような遊びサイトだったので、できるだけ安い金額で立てられたらと思っていたんですが、見事に撃沈した話です。

# 結論
デフォルト設定(Docker、Rails)だとt2.smallを使わないと、`bundle install`の`nokogiri`を入れるときにメモリエラーになります。

※[この記事](https://qiita.com/fkooo/items/bb921218313123c14358)のようにDockerを動かすだけならt2.nanoでも動きます。
※t2.smallならスクレイピング([docker-selenium](https://github.com/SeleniumHQ/docker-selenium))も動きました

# 詳細
## どんな環境?
Docker:

元記事を表示

Ruby on rails を初心者向けに解説⑤ ~データベースの編集と削除~

#はじめに
今回は以前の記事の続きになります。

よろしければ、以前の記事も御覧ください。

[Ruby on rails を初心者向けに解説①](https://qiita.com/renesisu727/items/c81e29c619dbd4b5ea76)

[Ruby on rails を初心者向けに解説② ~リンクの作成~](https://qiita.com/renesisu727/items/d729616473981e763fdd)

[Ruby on rails を初心者向けに解説③ ~データベースの作成~](https://qiita.com/renesisu727/items/c647582a59cfd7bf0a98)

[Ruby on rails を初心者向けに解説④ ~命名規則とform_Tagの使い方について~](https://qiita.com/renesisu727/items/f0f3de5377358f8768ed)

##データベースのデータ一覧の表示
以下のコードでusersテーブルのデータを取得して表示しましょう。

“`index.h

元記事を表示

Fontawsomeのアイコンが表示されなかった件

## はじめに
railsでアプリケーションを作成していました。
アイコンが欲しいと思いFontawsomeを使用することにしました。
ですが表示されないということが起きました。

## 準備
まずはFontawsomeのアイコンが使えるようにする為に準備しました。
①Gemfileに

“`
gem ‘font-awesome-sass’, ‘~> 5.12.0’
“`

を記載し、bundle installしサーバーを一度きり、再起動させました。
②application.scssに

“`
@import “font-awesome-sprockets”;
@import “font-awesome”;
“`

を記載しました。

③該当のHamlファイルに

“`
= icon(‘fas’,’star’)
“`

と記載してスターのアイコンを表示させました。
chromeを更新してみると、、、、表示がされていませんでした。

## やったこと
①GitHubの公式サイトを見て最新バージョンの確認。
→最新バージョンでした。
②gemfile.lockを確認してイン

元記事を表示

Passing Variable to Partial – undefined local variable or method error 2つの解決法

# 1: render partial ‘my_partial’ と書いているか、render ‘my_partial’ と書いているか確認する

呼び出し方に違いがあります

“`
<%= render 'my_partial', :locals => {:class_Name => “Science”, :y => 36} %>
<% render partial: 'my_partial', :locals => {:class_Name => ‘Science’, :y => 36 } %>
“`

# 2: 定義されているか確認する

“`
# Rails4以降
<% if defined?(local_var) do %>
# Rails3
<% if local_assigns[:local_var].present? do %>
“`

自分の場合、partialに書いた変数を使わない場合があり、 `if defined?(local_var)`を書いたら解決した。defined?で確認して、local_varをそのまま使わないようにした。

# 参考
自分はq

元記事を表示

Rails DM機能と非同期でメッセージの送受信を実装する方法

#なにこれ
DM機能とメッセージを非同期で送受信するための実装手順をまとめました。
備忘録と言語化するために書いてます!

#前提条件
・Usersテーブルが作成済みであること


##全体の流れ
1,テーブル作成
2,モデルでアソシエーションを組む
3,usersコントローラーを編集

#テーブル設計
今回は合計4つのテーブルが必要になります。
ユーザー情報を保存するUsersテーブル
誰がDMのどのルームに参加したかuser_idとroom_idを管理するEntriesテーブル
ルーム自体を管理するroomsテーブル
どのルームで誰がメッセージを送ったのか管理するmessagesテーブル
文字だけの説明じゃなくて、
ご自身でテーブルを紙に書き出して見ると分かりやすいと思います!

#Usersテーブル
今回の場合はnicknameカラムとavatarカラムを追加してますが、
ここは個人で編集して下さい。
avatarは必要なさそうならコメントアウトすることをオススメします。
#
“`ruby:マイグレーションファイル
def change
add_column :us

元記事を表示

OTHERカテゴリの最新記事