LoginSignup
5
6

More than 5 years have passed since last update.

Ruby on Railsチュートリアルを始めるあなたへ 〜僕がチュートリアルを終えて気づいたこと〜

Last updated at Posted at 2017-03-05

はじめに

こんにちは。

僕がRuby on Railsチュートリアルをひととおり終えて、
気づいたことを挙げていこうと思います。
自分の備忘録的な感じにしつつ、わかりやすく説明することを意識しています。

これからRuby on Railsを始めるあなたや、既に始めているあなたへ贈ります。
この記事が少しでもあなたの役に立てば幸いです。

前提条件

Ruby on Rails チュートリアル第4版をこれから学ぶ、または既に学んでいる
実行環境:Cloud9
OS:Mac OS Sierra

Cloud9環境でのRailsサーバー起動

僕の環境では、チュートリアルにあるサーバー起動方法だと
起動できませんでした。

起動できない場合は以下のコマンドを試してみてください。

rails server -b 0.0.0.0 -p 8080

これでサーバーが起動できると思います。

サーバー起動時に「A server is already running. 」と出た場合

サーバーがうまく終了しなかったときに起こるエラーです。

解決方法

以下のコマンドを実行します。

ps ax

すると、こんな感じのリストが出てくると思います。

    PID TTY      STAT   TIME COMMAND
      1 ?        Ss+    0:00 /mnt/shared/sbin/micro-inetd 22 /mnt/shared/sbin/dropbear -i -s -m -R
    282 ?        Ss     0:00 /mnt/shared/sbin/dropbear -i -s -m -R
    283 ?        Rl     0:02 vfs-worker {"pingInterval":5000,"nodePath":"/mnt/shared/lib/node_modules","tmuxBin":"/mnt/shared/sbin/tmux","root":"/","
          ・
          ・
          ・
   2172 ?        Sl     0:04 puma 3.4.0 (tcp://0.0.0.0:8080) [sample_app]                                 
   2182 ?        Sl     0:00 puma: cluster worker 0: 2172 [sample_app]                                    
   2186 ?        Sl     0:00 puma: cluster worker 1: 2172 [sample_app]
          ・
          ・
          ・   

このリストで、COMMAND列の「puma」がある行に対応する、
PIDの列にある数字を覚えておきます。

この例だと、2172・2182・2186ですね。

そして、以下のコマンドを実行します。

kill 2172
kill 2182
kill 2186

これは例なので、あなたの環境によって数字は変わります。
これでサーバーは正常に起動するはずです。

ウェブページのHTMLを表示するコマンドショートカット

ウェブページを作っているときに、ふとHTMLを表示したくなることってありませんか?

そんなときに使えるコマンドがこちら!

option + command + I

これ一発でページのHTMLやCSSスタイルが丸わかりです!

rails generate

rails generate controller MyPages home

これを実行すると、

  • app/controllers/my_pages_controller.rb
  • app/views/my_pages/home.html.erb
  • test/controllers/my_pages_controller_test.rb
  • app/helpers/my_pages_helper.rb
  • app/assets/javascript/my_pages.coffee
  • app/assets/stylesheets/my_pages.scss

以上のファイルが生成されます。
my_pages_controller.rbがコントローラです。
home.html.erbがホームページです。

同様に、

rails generate model Mymodel

を実行するとモデルが生成されます。

touchコマンド

チュートリアルを進めていると、新規ファイルを作る場面にたびたび遭遇します。
そんな時に便利なコマンドがあります。

touch ファイルの場所/新規ファイル名

こうすると新規ファイルを作成できます。

ちなみに、touchコマンドは本来ファイルやディレクトリのタイムスタンプを更新するコマンドです。

Rubyには暗黙の戻り値がある

あなたが他のプログラミング言語(例:C、Javaなど)の経験者であれば、
関数の最後に「return」を書くことはご存じだと思います。

Rubyでは、returnを書かなくても関数内で最後に評価された式の値が自動的に戻り値になります。
ただし、if文などの条件分岐中でreturnしたい場合はreturnを書く必要があります。

パーシャル

Railsにはパーシャルというものがあります。

パーシャルとは

パーシャルとは、テンプレート(.html.erbファイル)のプログラムコードを分けることです。
そうすることで、同じコードを別のテンプレートで使いまわせます。

例えば、sample.html.erbにA、B2つのコードがあるとします。
help.html.erbで、sample.html.erbにあるBのコードを使いたいとします。

こういった場合、Bのコードをパーシャルにすると
sample.html.erb、help.html.erbでBのコードを使えます。

Bのコードを変更したくなった場合は、パーシャルのコードを変更するだけで
sample.html.erb、help.html.erbどちらにも対応できます。

これ以外にも、パーシャルは1つのテンプレートにあるコード量が
多くなりすぎないようにするという役割もあります。

Sass

Sassは、スタイルシートを記述するための言語です。
拡張子は「.scss」です。
SassはCSSを拡張したもので、CSSには無い機能があります。

例えば、CSSでは同じコードを使いまわしできません。
ですが、Sassでは同じコードを使いまわせる機能があります。

rails routesとパス

rails routes

を実行すると、以下のようなリストが出てきます。

                 Prefix Verb   URI Pattern                             Controller#Action
    password_resets_new GET    /password_resets/new(.:format)          password_resets#new
   password_resets_edit GET    /password_resets/edit(.:format)         password_resets#edit
                   root GET    /                                       static_pages#home
                   help GET    /help(.:format)                         static_pages#help
                  about GET    /about(.:format)                        static_pages#about
                contact GET    /contact(.:format)                      static_pages#contact
                 signup GET    /signup(.:format)                       users#new
                         ・
                         ・
                         ・

このリストを例にします。
erbファイルに

<%= link_to "Home", root_path %>

と書いたとします。

ページに表示される「Home」のリンクをクリックすると、「URI Pattern」のURLに飛びます。
ここでは「/」です(いわゆるルートパス)。
そして、static_pages_controller.rbにあるhomeメソッドが実行されます。

rails routesを実行することで、設定されているパスの一覧を表示できます。
それぞれのパスがどのURLに飛ぶかがわかります。
その後、どのコントローラーのどのメソッドが実行されるかがわかります。

ファイルの中身を検索

プログラムが大規模になってくると、
「これどのファイルに書いたっけ?」ということが増えてくると思います。

そこで便利なのがファイルの中身検索です。
Cloud9では、

Command + Shift + F

でファイルの中身を検索できます。

おわりに

いかがでしたか。
他にも気づいたことがあれば、このページにどんどん追記していきます。
よろしくお願いします。

5
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6