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

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

【Docker】docker-compose up によりWEBがすぐに落ちてしまう問題【Rails】

最近嵌ってしまった問題を備忘録的に残します。

#$ docker-compose up -d
いつも通り、バックグラウンドでコンテナを起動させました。

WEBを確認すると・・・エラーが発生して繋がりません。

#$ docker ps
により、状況を確認すると、

DB(MYSQL)だけが立ち上がっている状況でした。

スクリーンショット 2020-04-19 11.32.09.png

docker-compose up -dにより立ち上げたはずが、何故かすぐに落ちてしまっています。

docker-compose stop
docker-compose up -d

により、再起を試してみても一向に変化なし。

これはどうしたものかと思い、途方に暮れ、原因を探っていると、コンテナ起動の前に、

#gem

元記事を表示

【Rails】CSRFとRailsでの対策法について

## はじめに

Webアプリを自分で作成する際にはセキュリティ面もしっかり考えないとちょっとこわいですよね?
なので今回は普段あまり意識していなかったCSRFについて簡単にまとめてみます!

#### 目的
– CSRFについて知ろう?
– RailsでのCSRF対策について知ろう?

## CSRFとは?
クロスサイト リクエスト フォージェリの略。(かっこいい?)

悪いユーザーが攻撃用のコード(JavaScriptが多い)をサイトやURLに仕込んで、そのサイトにアクセスしたユーザーが意図しない操作をさせてしまう攻撃のこと。

意図しない操作は、自分のツイートが勝手に書き込みされたり、勝手にサービスに勝手に登録されたり、勝手にネットショッピングで物を買っていたりなど、、、!
めちゃくちゃ迷惑ですよね、、、??

しかもCSRFは罠にかかったユーザーの権限でアクセスできてしまうので、ユーザーがログインをしたままだと認証ページがあったとしても好き勝手できてしまうのです、、、??

## RailsアプリのCSRF対策法
とてもこわいCSRFですが、ご安心ください??
**Rail

元記事を表示

Factorybotを使ったテストデータの作成方法

## Factorybotとは
Rspec標準で使える”fixture”に代わり、テストデータの準備をサポートしてくれるライブラリ。
“factory_bot_rails”はRails向けの拡張版のFactorybot

## セットアップ方法
以下をGemfileに追加し、 `bundle install`

“`ruby:Gemfile
group :development, :test do
gem ‘factory_bot_rails’
end
“`
### ファイル生成
“`ruby:
# ジェネレーターコマンドの例
$ bin/rails g factory_bot:model user
“`
## サンプルコード
“`ruby:spec/factories/users.rb
FactoryBot.define do
factory :user, aliases: [:owner] do
first_name “Aaron”
last_name “Sumner”
sequence(:email) { |n| “tester#{n}

元記事を表示

【Rails】RSpecでのモデルクラス単体テスト

#はじめに
学習中の備忘録です。

#概要
* 単体テスト準備
* モデルクラスのテストコードを書く
* テストコードを追記する
* テストコードを書く際の原則
* まとめ

#前提
rails5.2.3 RSpec factory_bot
#単体テスト準備
##RSpecのインストール

Gemファイルに追記
また web_console というgemはtest環境で動かすと不具合が起きる可能性があるgemなのでdevelopment環境でのみ動くようにします。

“`ruby:Gemfile
group :development, :test do
#省略
gem ‘rspec-rails’
end

group :development do
gem ‘web-console’
end
“`
“`:ターミナル
% bundle install
“`

##RSpecの設定

“`:ターミナル
% rails g rspec:install
#RSpec用設定ファイルの作成
“`

作成されるファイル

“`
Running via Spring pre

元記事を表示

ポータルサイト創作記:4日目

前回は、`$ rails new`コマンドでファイル群を作成したことをGitHubにプッシュし、変更をマージ。
つくったブランチを削除するところまで行った。

今日は、Gemをインストールし、Railsアプリを立ち上げるところまで行う。

まずはGemのインストール。
「Gem」。直訳だと「宝石」。「Ruby」という名に世界観が統一されていて美しい。

ではGemとはどんな宝石なのかというと、Railsに機能を付け加えてくれるのである。比喩的な表現で恐縮だが、Railsでつくったアプリケーションがキラキラと飾り付けられるイメージだろうか。
このGemによる飾り付けで、Railsアプリケーションにはどんどん機能が増えていく。
`$ rails new`を実行したら、Gemのセットを入荷=インストールするのが通例になっている。コマンドはこうだ。

“`$ bundle install –path vendor/bundle“`

すると、以下のように大量のGemがインストール(宝石が入荷)されてくる…!
スクリーンショット 2020-04-</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Rails</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/hiroa_qiita/items/72a90f0c9e0cbbf1900f'>元記事を表示</a></div>
<h3 id=railsチュートリアル 10章 初心者が意識すべき事

#初心者がrailsチュートリアル10章で意識すべき事
無し
##理由
もちろん無理やり捻り出すこともできますが、ここは正直細かいところなので、自分のアプリを作りなが戻ってきてチラチラ見るのがちょうど良いと思います。
なのでここはさらっと通過して11章に進みましょう!!!

元記事を表示

【Rails new】Ruby on rails アプリケーション作成

![スクリーンショット 2020-04-18 23.36.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620689/b33417c2-6935-1609-e43a-a34375dd56b7.png)

##開発環境
■ Mac OS catalina
■ Ruby on Rails (5.2.4.2)
■ Virtual Box:6.1
■ Vagrant: 2.2.7

##実装

仮想環境内にて、

①アプリケーション自動作成

“`①Mac内.terminal
$ rails new (アプリケーション名)
“`

②作成したアプリケーションに移動

“`②Mac内.terminal
$ cd (アプリケーション名)
“`

③サーバーを起動

“`③Mac内.terminal
$ rails s -b 0.0.0.0
“`

Google chromeにてhttp://localhost:3000

![スクリーンショット 2020-04-18 23.36.46.png](h

元記事を表示

Railsアプリ:Gitコマンド備忘録

#初期コマンド
git init
git remote add origin 「URL」
git push -u origin master

#ブランチ作成
git checkout -b ○

#ブランチ完了
git add -A
git commit -m “Finish ○”
git checkout master
git merge ○
git push

元記事を表示

[Rails]本番環境においてユーザーをメール認証無しで有効化する方法

RailsTutorialの第11章でメール認証によってアカウントを有効化する方法を実装したのですが、メール認証せずに任意のメールアドレスを持ったユーザーを登録したいと思ったため、備忘録として書いておきます。

## データベース
“`db/seeds.rb
User.create!(name: “hoge”,
email: “hoge@example.com”,
password: “xxxx”,
password_confirmation: “xxxx”,
admin: true,
activated: true,
activated_at: Time.zone.now)
“`

## 本番環境で実行
こうすると、開発環境ではactivated: trueになってくれるのですがherokuにデプロイして本番環境で実行するとactivated: falseになってしまいます…

“`
$ he

元記事を表示

CentOS7上でRailsのsecret_tokenがセット出来ない問題の対処方法

#前提
* OS:

“`
$ cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
“`
* rubyはSCLリポジトリよりインストールされている
* `nokogiri-1.10.1`がインストールされている(以下のコマンドでインストール)

“`
$ gem install nokogiri — –use-system-libraries
“`

* railsプロジェクト内のGemfileを使用し`bundle install` した場合 `Fetching nokogiri 1.8.1` をしていることを確認
* `gem list` を確認した場合 `nokogiri (1.10.1)` となっていることを確認

#エラー内容

“`
$ export SECRET_KEY_BASE=`bundle exec rake secret`
bundler: failed to load command: rake (/home/centos/coin_stats/vendor/bundle/rub

元記事を表示

paginateに条件を加える

特定のデータをページネーションで表示させるためにいろいろと調べたのでメモ

##いつもの
ページネーションの例に載っているような使い方だと

“`ruby:Gemfile
gem ‘will_paginate’, ‘3.1.6’
gem ‘bootstrap-will_paginate’, ‘1.0.0’
#=> bundle install実行
“`
まずは`Gemfile`に追加した後コマンド実行。
コントローラで`インスタンス変数.paginate`と追加。

“`ruby:words_controller
def index
@words = Word.paginate(page: params[:page], per_page: 10)
end
“`

wordsテーブルにあるすべてのデータをページネーションとして表示させるならあとはビューに
`<%= will_paginate @words(@wordsはどっちでも可) %>`
を置くだけで準備完了です。
##本題
条件を何も指定していないページネーションだとテーブルの全データ表示になるので

元記事を表示

【Rails】各タグごとのクラスの記述の仕方

# 【Rails】各タグごとのクラスの記述の仕方
## この記事のゴール
・Railsのタグにおけるクラスの定義の仕方をインプットする

### Link_toタグ
“`:html.erb
<%= link_to 'リンクに表示する文字列', @モデル名など, class: "btn" %>
“`

### text_fieldタグ
“`:html.erb
<%= f.text_field :title, class: "hogehoge" %>
“`

### text_areaタグ
“`:html.erb
<%= f.text_area :content, class: "hogehoge" %>
“`

元記事を表示

ログイン機能なしで投稿サイトを作る(概論)

#目的
今回はタイトルの通り「ログイン機能なしで投稿サイトを作る」方法と、注意点について話します。

#概要
1. なぜログイン機能をつけたくないのか?
2. ログイン機能の存在意義は?
3. 投稿の削除、編集機能はどうする?
4. いいね機能はどうする?

#1. なぜログイン機能をつけたくないのか?
人それぞれではありますが、ログイン機能を付けたくない理由はいくつかあると思います。自分はwebサイトを作った際、要らないなと思いました。その理由は単純で、「ユーザーにとって面倒くさい」からです。

ユーザーの視点に立ってみてください。単なる個人サイトなのに、わざわざログインして、さらにメルアドまで書かなくちゃいけないなんて、億劫だし登録をためらってしまいませんか?(´;ω;`)

誰でも自由に投稿できるサイトだと、その点利用するハードルが一気に下がるはずです。

#2. ログイン機能の存在意義
そもそも、ログイン機能はなぜ存在するのでしょうか?wikipediaに下記のことが書いてありました。

**「ログイン(英: log in)とは、コンピュータの利用開始時にユーザーの身元や妥当性

元記事を表示

Indexページにいいね機能をつける

#目的
ここでは、indexページにいいね機能を付ける方法とその仕組みを解説したいと思います。railsにおけるいいね機能を解説してくれている多くの記事はshowページのみに対応しています。それをindexページで使う場合、注意点が1つあるのです。

**※showページにおけるいいね機能は実装できている前提で話します。
参考**
https://qiita.com/nojinoji/items/2c66499848d882c31ffa

#概要
1. indexページ
2. 解説

#1. indexページ
indexページにいいね機能を付けるときは、任意の場所に下記の真ん中の5行を追記してください。多くの場合はeach doの中に入るはずです。

“`views/tweets/index.html.erb
<% @tweets.each do |t| %>


<% if current_user.already_liked?(t) %>
<%= button_to 'いいねを取り消す', tweet_like_path(id: t.id, tweet_id: t

元記事を表示

パラメーターで条件分岐

受け取ったパラメーターによって条件分岐する機能を実装する必要があったのでメモ
###状態
Wordsテーブルにcompleteカラム。
completeカラムはtrueかfalseの値が入る。
送られてくるパラメーターがtrueかfalseによってリダイレクトする場所を変えたい。
下記はword入力フォーム

“`ruby:_word.html.erb
<%= form_for(word) do |f| %>

<%= f.check_box :complete, {}, checked_value = "true", unchecked_value = "false" %>
<%= f.submit "保存", class: "btn btn-primary btn-xs" %>

<% end %>
“`

ちなみに`words.html.erb`にはチェックボックスが未チェック状態(つまり初期がfalse)、`practice.html.erb`にはチェッ

元記事を表示

Ruby on Railsのチュートリアル ~第6章ユーザーのモデルを作成する~

# はじめに
webアプリケーションを作るための学習記録
(マッチングアプリを作る予定)

こちらのチュートリアルを片っ端から進めていく
【Ruby on Rails チュートリアル】
https://railstutorial.jp/

# 第6章ユーザーのモデルを作成する
## まとめ
– マイグレーションを使うことで、アプリケーションのデータモデルを修正することができる
– Active Recordを使うと、データモデルを作成したり操作したりするための多数のメソッドが使えるようになる
– Active Recordのバリデーションを使うと、モデルに対して制限を追加することができる
– よくあるバリデーションには、存在性・長さ・フォーマットなどがある
– 正規表現は謎めいて見えるが非常に強力である
– データベースにインデックスを追加することで検索効率が向上する。また、データベースレベルでの一意性を保証するためにも使われる
– has_secure_passwordメソッドを使うことで、モデルに対してセキュアなパスワードを追加することができる

## 所感
・もうSQLいらな

元記事を表示

【Rails】カテゴリ検索機能の実装で学んだこと

#はじめに
某プログラミングスクールでフリマアプリを作っています。
そこで、カテゴリ別検索機能の実装を頑張りました。
ので、そこで学んだことだったり、実装方針についてまとめようかな。って思います。

#やったこと
これを実装しました。

実装の手順としては、大きく分けて2つです。
言葉で説明すると、以下の実装をしました!
ただ、両方説明すると ~~FF7リメイクで遊んでいる時間がなくなる~~ 内容が膨大になるので、
**今回は②にフォーカスを絞って説明します!**

– ①ヘッダーに実装しているカテゴリーボタンをクリックすると、親カテゴリーのリストを表示する
– 親カテゴリーリストにマウスを重ねると、その親カテゴリーに紐づいた子カテゴリーを表示する(非同期通信処理)
– 子カテゴリーリストにマウスを重ねると、その子カテゴ

元記事を表示

credentials.yml.encの使用法

環境変数設定にcredentials.yml.encを使用しました。
お問い合わせフォーム作成のためにGメールアドレスと2段階認証のパスワードが必要だったので、環境変数に設定しました。

参考
https://qiita.com/akizora/items/936f57dd2d3cb11fc840

## credentials.yml.encの編集
ターミナル

“`
$ EDITOR=”vim” bin/rails credentials:edit
“`
iで入力モードになります。

## 認証情報を記載
ターミナル

“`
# aws:
# access_key_id: 123
# secret_access_key: 345

 g_mail:
g_mail: Gメールアドレス
g_pass: 2段階認証パスワード

# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: 8

元記事を表示

rails sをするとCould not find a JavaScript runtime.が出てきてしまう時の対処法

ある日、作成中のアプリでrails sをするとCould not find a JavaScript runtime.というエラーが出て、ローカル環境に入れなくなってしまいました。

therubyraceを入れると直るという情報があったので、インストールしようと思ったのですが、libv8とバージョンを合わせろというエラーが出てきて、しばらくやっていましたが、解決できず、別の方法を探すことに。

node.jsをインストールすると直るみたい。
参考

ターミナル

“`
$ curl –silent –location https://rpm.nodesource.com/setup_8.x | sudo bash –
“`

“`
$ sudo yum -y install nodejs
“`
MACのログインパスワードを入力するとダウンロードが始まります。

https://nodejs.org/ja/
からもダウンロードが可能です。
Docker内でRails cをしてadmin機能を持ったユーザを作成する方法

以下の記事の内容のDocker版です。
https://qiita.com/geek_shanshan/items/c68befcae55c078b5a9d

管理用にadminカラムを持ったユーザーを作成したいと思いました。

####前提
Rails は “`web“` で動作します。
Dockerをアプリに組み込めている状態です。

##手順

“`
$ docker-compose up -d #コンテナを起動する

$ docker-compose exec web bash #コンテナ内に入りbundle install、rails cなどを使える状態にする

root@コンテナID:/アプリ名#rails c #コンソールに入る

irb(main):006:0> User.create!(name:’admin’, email:’admin@example.com’, password:’admin’, admin: true) #ユーザーを作る
“`

終わりです。

元記事を表示

OTHERカテゴリの最新記事