Stone on Rails

34歳のハゲデブがruby on railsを始めました。

今さら聞けないprotect_from_forgeryって何ですか?

railstutorial.jp

第1章のしょっぱなから下のようなソースコードがありました。

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
end

これを見た瞬間、そもそも、

protect_from_forgery with: :exception

って何?という疑問が頭から離れませんでした。

おそらく、forgeryという言葉からセキュリティーに関する処理かなと推測していたのですが、検索してみるとビンゴで、クロスサイトリクエストフォージェリから守るための処理のようです。

クロスサイトリクエストフォージェリ - Wikipedia

デフォルトでこのような配慮をしてくれるなんてなんと素敵な仕様でしょうか!

Ruby on Railsのディレクトリ構成について

railstutorial.jp

Ruby on Rails チュートリアルRailsアプリケーションのディレクトリ構造を確認すると下のように書かれていた。

app/assets アプリケーションで使うCSS (Cascading Style Sheet)、JavaScriptファイル、画像などのアセット

lib/assets ライブラリで使うCSS (Cascading Style Sheet)、JavaScriptファイル、画像などのアセット

vendor/assets サードパーティプラグインやgemで使うCSS (Cascading Style Sheet)、JavaScriptファイル、画像などのアセット

JSファイルとCSSファイルと画像ファイルを保管するにあたって果たしてこんなにディレクトリ構造って必要なのだろうか?

少なくとも、JSはwebpackを使って結合するのが主流だし、CSSもパッキングして1ファイルで構成するのがメジャーな気がするんだけど、ひょっとして、Rails自身できたのが2004年とまだスマホがなかった年だし、Google Chromeすらなかったのでその時代の影響を引きずっているのだろうか?

まだRuby on Rails チュートリアルを読み始めたばかりなので、今後、その謎が解き明かされていくのかもしれない。

今さら聞けないRubyのインデントについて

Rubyの世界では、インデントに2つのスペースを使うのがほぼ常識になっているので、 このエディタのインデント設定もデフォルトの4から2に変えておくことをおすすめします。

railstutorial.jp

Ruby on Rails チュートリアルをもくもくと読んでいたら普通に上のようなインデントに関する記述があったのだが、これ結構大事な気がする。

大規模開発になってくるとインデントが統一されていないと可読性が悪くなり結果的に全体の生産性が低くなってしまうからだ。

今さら人に聞けないrailsを起動させる方法

さっき下のようなエントリーを書きました。

stoneonrails.hatenablog.com

そこで、今度は、いよいよ、実際に、Railsを起動させます。

まず、前提条件として、今回は、gitにあるあらかじめ作成されているRuby on Railsのプロジェクトを起動させる方法について書いていきます。

プロジェクトがないと始まらないので、特定の場所に、cloneします。

そして、ターミナル上で、下記のコマンドを打ってもろもろインストールします。

bundle install --path vendor/bundle

ここで何やらエラーが発生しました。

An error occurred while installing pg (0.18.4), and Bundler cannot continue.
Make sure that `gem install pg -v '0.18.4'` succeeds before bundling.

そこで言われた通りに、ターミナルで、

gem install pg -v '0.18.4'

と打ってインストールしたものの、再度、

bundle install --path vendor/bundle

を叩いてもまた同じエラーが発生。

若干、イライラしながら、検索して調べてみると、どうやら、もう少し上の、

checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***

に原因があるみたいで、

brew install postgresql

postgresqlをインストール後、再度、

bundle install --path vendor/bundle

を打ち込んだら、無事にインストールが正常に終了しました。

そして、いよいよ、待ちにまった起動です。

bundle exec rails s

をうったら、Railsが起動しました!

やったね。

今さら人に聞けないmacでRuby on Rails環境を整える方法

mac OS Sierra 10.12.6 でRubyRuby on Railsの環境の作り方を調査しました。

homebrewはあらかじめインストールされていたのでこのツールをベースに進めていきます。

まずは、下記のようにターミナルでコマンドを打ってrbenvをインストールしました。

brew install rbenv

インストール完了後、次は、ターミナルで下記のようにコマンドを打ってruby-buildをインストールしました。

brew ruby-build

次も、ターミナルで、下記のようにコマンド打って.bash_profileファイルを作りました。

export PATH="$HOME/.rbenv/bin:$PATH" >> ~/.bash_profile
eval "$(rbenv init -)" >> ~/.bash_profile

.bash_profileファイルが作成されましたので、ターミナルでそのファイルを実行します。

source ~/.bash_profile

次に下記のようにruby 2.4.1をインストールしようとしました。

rbenv install 2.4.1

実行した瞬間、

BUILD FAILED

という文言が表示されたので、あ、失敗したんだなと思いました。

検索してみると、xcodeに必要となるツールがインストールされていないことがわかったので、ターミナルで、

xcode-select --install

と叩くと、

f:id:maipontan:20171023000707p:plain

「インストール」ボタンをクリックします。

f:id:maipontan:20171023001245p:plain

「同意する」ボタンを押します。

f:id:maipontan:20171023001259p:plain

「電源アダプタ」を入れていないと上のようなアラートが表示されますが、おそらくバッテリーは持つだろうと思い、そのまま「バッテリー電源のまま続ける」を選択しました。

f:id:maipontan:20171023001428p:plain

上の画面を見ながらひたすら待ちます。

f:id:maipontan:20171023001437p:plain

「完了」ボタンを押して終了です。

で、再度、

rbenv install 2.4.1

を打つと無事に、インストール完了しました。

いよいよ、railsインストールかと思いきや、その前に、下記のコマンドをターミナルで打ってbundleのインストールを行いました。

gem install bundler

インストール完了後、やっと、ruby on railsのインストールです。

gem install rails

インストール完了後、本当にインストールされているか、下記のコマンドを打って確認します。

rails -v

打った後、「Rails 5.1.4」と出力されたので無事にインストールされたことがわかります。

めでたし、めでたし。