##[Rails]Railsチュートリアル第一章から始める
改めてRailsチュートリアル
を学習したいと思いたっため学習する。
Railsチュートリアル
https://railstutorial.jp/chapters/beginning?version=5.1
最終的には「Rails 5 技術者認定ベーシック試験」を取得する。
そのため定期的に自作の問題を作成して理解度を高める。
使用環境は以下で行う
Rails 5.1.6
Ruby 2.3.0
AWS cloud9は使用せず実装する。
1.Railsプロジェクトで使うenvironmentディレクトリを作成する
$ cd # ホームディレクトリに移動する
$ mkdir environment # 'environment' ディレクトリを作成する
$ cd environment/ # 'environment' ディレクトリに移動する
※基本的なunixコマンドは省略
2.rails newを実行する (バージョン番号を指定して新規プロジェクト作成)
$ cd ~/environment
$ rails _5.1.6_ new hello_app
ちなみに初めから別のRailsバージョンが入っている場合は、gemでエラーが発生する場合がある。
例えばこんなnokogiriのエラー
Errno::EACCES: Permission denied @ dir_s_mkdir -
.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-18/2.3.0-static/nokogiri-1.10.9
An error occurred while installing nokogiri (1.10.9), and Bundler
cannot continue.
Make sure that `gem install nokogiri -v '1.10.9' --source
'https://rubygems.org/'` succeeds before bundling.
なるほどバージョンが合っていない。
以下でinstallしよう。
gem install nokogiri -v '1.10.9' --source
'https://rubygems.org/'
OK-正常であれば新規にプロジェクトができる。
3.Bundler
Gemfileの設定を行う
sqlite3 gemをdevelopment環境とtest環境 (7.1.1) だけで使う (つまりproduction環境では使わない) ように変更している点が重要。
後でHerokuで使うデータベースと競合する可能性を防ぐため
group :development, :test do
gem 'sqlite3', '1.3.13'
gem 'byebug', '9.0.6', platform: :mri
end
group :development do
gem 'web-console', '3.5.1'
gem 'listen', '3.1.5'
gem 'spring', '2.0.2'
gem 'spring-watcher-listen', '2.0.1'
end
リストを置き換えたら以下のコマンドで bundle install
$ cd hello_app/
$ bundle install
※ちなみにgemでエラーになる時はその都度で調べる。
Errno::EACCES: Permission denied @ dir_s_mkdir -
が発生した時は下記で対応できた。
https://qiita.com/katsu105/items/9d71fa619cf5102c45d3
権限が違う時がある。
演習
- Rubyのバージョンは
ruby -v
でバージョンを確認できる。 - Railsのバージョンは
rails -v
でバージョンを確認できる。
4 Model-View-Controller (MVC)
「models」「views」「controllers」(MVC)の3つの要素がある
Railsアプリと通信する際、ブラウザは一般的にWebサーバーにリクエスト (request) を送信し、これはリクエストを処理する役割を担っているRailsのコントローラ (controller) に渡されます。コントローラは、場合によってはすぐにビュー (view) を生成してHTMLをブラウザに送り返します。動的なサイトでは、一般にコントローラは (ユーザーなどの) サイトの要素を表しており、データベースとの通信を担当しているRubyのオブジェクトであるモデル (model) と対話します。モデルを呼び出した後、コントローラは、ビューを描画し、完成したWebページをHTMLとしてブラウザに返します。
5 Hello, world!
Applicationコントローラにhelloを追加する。
app/controllers/application_controller.rb
def helloを追加してrender htmlで文字列を返す。
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
def hello
render html: "hello, world!"
end
end
ルートルーティングを設定する
config/routes.rb
Rails.application.routes.draw do
root 'application#hello'
end
これで先ほど設定したhello, world!
が表示される。
rails s
でサーバーを起動して確認。
演習
1.helloアクションを書き換え、「hello, world!」の代わりに「hola, mundo!」と表示
=> 文字列をhola, mundo!
に変更する。
2.Railsでは「非ASCII文字」もサポートされています。
=>「非ASCII文字」もサポート
3.helloアクションを参考にして、2つ目のアクションgoodbyeを追加しましょう。このアクションは、「goodbye, world!」というテキストを表示します。リスト 1.9のルーティングを編集して、ルートルーティングの割り当て先をhelloアクションからgoodbyeアクションに変更する。
6 Gitによるバージョン管理
gitは試験範囲外、飛ばす
7 Bitbucket
Bitbucketは飛ばす
GitHubとBitbucketは、Gitリポジトリを扱う2つの著名なサービス
まとめ
Ruby on Railsとは、Web開発のためのフレームワークであり、Rubyプログラミング言語によって記述されている。
Railsにはrailsという名前のコマンドラインコマンドがあり、rails newで新しいアプリケーションを生成したり、rails serverでローカルサーバーを実行したりできる。
コントローラのアクションを追加したり、ルートルーティングを変更したりするだけで「hello, world」アプリケーションを作成できる。