Ruby on Rails チュートリアルをなぞる
Ruby on Rails チュートリアルをなぞる
きっかけ
先日 try! Swift Conf にて @yuumi3 さんにお会いし、
とのお話をいただき、「そういえば Ruby on Rails は数回触ってみたものの使いこなすには至ってないなぁ」というところもありやってみるか、というのが動機。
Ruby on Rails チュートリアル:実例を使って Rails を学ぼう が良いとこれまた @yuumi3 さんに教えていただいたので一回これを通してみる。
- テストについて学ぶ
- サーバーサイドについても触れていこう
が目標。
一挙両得となるか、二兎を追う者一兎をも、となるか一回通してみれば見えてくるものもあるかなと。
導入
先述の通り Ruby on Rails チュートリアル:実例を使って Rails を学ぼうに沿って進める。
現行(2016/03/08)の最新は第3版(Rails 4.2。5系がそろそろ出るらしい)。
第1章 ゼロからデプロイまで | Rails チュートリアルを読んでいろいろ面喰らう。
3日?(注釈あり)
インストールや設定などに関する多くのわずらわしい問題を回避するため、クラウド開発を標準で採用しました
今時のチュートリアルってそうなんですかね。「気合い入れて環境構築からやるぜ!」と思ってたけどこれはこれで面白い。
Railsを「デフォルトスタック」のまま無改造で使うことにしました。これに伴い、テスティングフレームワークも従来使用していたRSpecから、標準のminitestに切り替えました。
あれー?@yuumi3さんにテストを学ぶならRubyと聞いたときには「RSpecが良い!」と聞いていたのでこのまま進むかちょっと不安を覚えつつ、
ということで気にせず進める。
開発環境
先述の通り、クラウド上で行うためやることは少なめ。
使用するのは下記とのこと。
Cloud9 - Your development environment, in the cloud
使ったことはなかったが、特にハマることもなく非常に便利。あっという間に環境構築は完了する。
プログラミングの開発環境に便利!Cloud9の使い方 | TechAcademyマガジンとか見てみると他にも便利な使い方があるようなのでこれはこれで今後使ってみようと思ったり。
Railsのインストール
Cloud9上に用意されているテンプレート「rails-tutorial」には、Railsだけはインストールされておらず、インストールだけはチュートリアル中で実施する手順となっているそうな。
command-line terminal内に以下を入力。(チュートリアルの版によってバージョン指定は異なるので参照するチュートリアルに従ってください。)
$ gem install rails -v 4.2.2
Fetching: activesupport-4.2.2.gem (100%) Successfully installed activesupport-4.2.2 Fetching: actionview-4.2.2.gem (100%) Successfully installed actionview-4.2.2 Fetching: actionpack-4.2.2.gem (100%) Successfully installed actionpack-4.2.2 Fetching: activejob-4.2.2.gem (100%) Successfully installed activejob-4.2.2 Fetching: actionmailer-4.2.2.gem (100%) Successfully installed actionmailer-4.2.2 Fetching: activemodel-4.2.2.gem (100%) Successfully installed activemodel-4.2.2 Fetching: activerecord-4.2.2.gem (100%) Successfully installed activerecord-4.2.2 Fetching: railties-4.2.2.gem (100%) Successfully installed railties-4.2.2 Fetching: rails-4.2.2.gem (100%) Successfully installed rails-4.2.2 9 gems installed
完了。便利過ぎ。
hello, world
アプリケーションの作成
バージョンを指定して rails new を実行。
$ rails _4.2.2_ new hello_app
ややあって以下のログが流れ完了。
create create README.rdoc create Rakefile create config.ru create .gitignore create Gemfile create app create app/assets/javascripts/application.js create app/assets/stylesheets/application.css create app/controllers/application_controller.rb create app/helpers/application_helper.rb create app/views/layouts/application.html.erb create app/assets/images/.keep create app/mailers/.keep create app/models/.keep create app/controllers/concerns/.keep create app/models/concerns/.keep create bin create bin/bundle create bin/rails create bin/rake create bin/setup create config create config/routes.rb create config/application.rb create config/environment.rb create config/secrets.yml create config/environments create config/environments/development.rb create config/environments/production.rb create config/environments/test.rb create config/initializers create config/initializers/assets.rb create config/initializers/backtrace_silencers.rb create config/initializers/cookies_serializer.rb create config/initializers/filter_parameter_logging.rb create config/initializers/inflections.rb create config/initializers/mime_types.rb create config/initializers/session_store.rb create config/initializers/wrap_parameters.rb create config/locales create config/locales/en.yml create config/boot.rb create config/database.yml create db create db/seeds.rb create lib create lib/tasks create lib/tasks/.keep create lib/assets create lib/assets/.keep create log create log/.keep create public create public/404.html create public/422.html create public/500.html create public/favicon.ico create public/robots.txt create test/fixtures create test/fixtures/.keep create test/controllers create test/controllers/.keep create test/mailers create test/mailers/.keep create test/models create test/models/.keep create test/helpers create test/helpers/.keep create test/integration create test/integration/.keep create test/test_helper.rb create tmp/cache create tmp/cache/assets create vendor/assets/javascripts create vendor/assets/javascripts/.keep create vendor/assets/stylesheets create vendor/assets/stylesheets/.keep run bundle install Fetching gem metadata from https://rubygems.org/........... Fetching version metadata from https://rubygems.org/... Fetching dependency metadata from https://rubygems.org/.. Resolving dependencies... Installing rake 10.5.0 Using i18n 0.7.0 Installing json 1.8.3 Installing minitest 5.8.4 Using thread_safe 0.3.5 Using tzinfo 1.2.2 Using activesupport 4.2.2 Using builder 3.2.2 Using erubis 2.7.0 Installing mini_portile2 2.0.0 Installing nokogiri 1.6.7.2 Using rails-deprecated_sanitizer 1.0.3 Using rails-dom-testing 1.0.7 Using loofah 2.0.3 Installing rails-html-sanitizer 1.0.3 Using actionview 4.2.2 Using rack 1.6.4 Using rack-test 0.6.3 Using actionpack 4.2.2 Using globalid 0.3.6 Using activejob 4.2.2 Installing mime-types 2.99.1 Using mail 2.6.3 Using actionmailer 4.2.2 Using activemodel 4.2.2 Using arel 6.0.3 Using activerecord 4.2.2 Installing debug_inspector 0.0.2 Installing binding_of_caller 0.7.2 Using bundler 1.8.4 Installing byebug 8.2.2 Installing coffee-script-source 1.10.0 Installing execjs 2.6.0 Installing coffee-script 2.4.1 Using thor 0.19.1 Using railties 4.2.2 Installing coffee-rails 4.1.1 Installing concurrent-ruby 1.0.1 Using multi_json 1.11.2 Installing jbuilder 2.4.1 Installing jquery-rails 4.1.0 Installing sprockets 3.5.2 Installing sprockets-rails 3.0.4 Using rails 4.2.2 Installing rdoc 4.2.2 Installing sass 3.4.21 Installing tilt 2.0.2 Installing sass-rails 5.0.4 Installing sdoc 0.4.1 Installing spring 1.6.4 Installing sqlite3 1.3.11 Installing turbolinks 2.5.3 Installing uglifier 2.7.2 Installing web-console 2.3.0 Bundle complete! 12 Gemfile dependencies, 54 gems now installed. Use `bundle show [gemname]` to see where a bundled gem is installed. Post-install message from rdoc: Depending on your version of ruby, you may need to install ruby rdoc/ri data: <= 1.8.6 : unsupported = 1.8.7 : gem install rdoc-data; rdoc-data --install = 1.9.1 : gem install rdoc-data; rdoc-data --install >= 1.9.2 : nothing to do! Yay! run bundle exec spring binstub --all * bin/rake: spring inserted * bin/rails: spring inserted
Gemfileの修正
Ruby gemごとにバージョンを明示的に指定することで、Bundlerが使用するgemのバージョンを指定できる(指定がない場合常に最新が使用される)とのこと。
下記で置き換える。
source 'https://rubygems.org' gem 'rails', '4.2.2' gem 'sass-rails', '5.0.2' gem 'uglifier', '2.5.3' gem 'coffee-rails', '4.1.0' gem 'jquery-rails', '4.0.3' gem 'turbolinks', '2.3.0' gem 'jbuilder', '2.2.3' gem 'sdoc', '0.4.0', group: :doc group :development, :test do gem 'sqlite3', '1.3.9' gem 'byebug', '3.4.0' gem 'web-console', '2.0.0.beta3' gem 'spring', '1.1.3' end
gemのインストール
$ bundle install
Using rake 10.5.0 Using i18n 0.7.0 Using json 1.8.3 Using minitest 5.8.4 Using thread_safe 0.3.5 Using tzinfo 1.2.2 Using activesupport 4.2.2 Using builder 3.2.2 Using erubis 2.7.0 Using mini_portile2 2.0.0 Using nokogiri 1.6.7.2 Using rails-deprecated_sanitizer 1.0.3 Using rails-dom-testing 1.0.7 Using loofah 2.0.3 Using rails-html-sanitizer 1.0.3 Using actionview 4.2.2 Using rack 1.6.4 Using rack-test 0.6.3 Using actionpack 4.2.2 Using globalid 0.3.6 Using activejob 4.2.2 Using mime-types 2.99.1 Using mail 2.6.3 Using actionmailer 4.2.2 Using activemodel 4.2.2 Using arel 6.0.3 Using activerecord 4.2.2 Using debug_inspector 0.0.2 Using binding_of_caller 0.7.2 Using byebug 8.2.2 Using coffee-script-source 1.10.0 Using execjs 2.6.0 Using coffee-script 2.4.1 Using thor 0.19.1 Using railties 4.2.2 Using coffee-rails 4.1.1 Using concurrent-ruby 1.0.1 Using multi_json 1.11.2 Using jbuilder 2.4.1 Using jquery-rails 4.1.0 Using bundler 1.8.4 Using sprockets 3.5.2 Using sprockets-rails 3.0.4 Using rails 4.2.2 Using rdoc 4.2.2 Using sass 3.4.21 Using tilt 2.0.2 Using sass-rails 5.0.4 Using sdoc 0.4.1 Using spring 1.6.4 Using sqlite3 1.3.11 Using turbolinks 2.5.3 Using uglifier 2.7.2 Using web-console 2.3.0 Bundle complete! 12 Gemfile dependencies, 54 gems now installed. Use `bundle show [gemname]` to see where a bundled gem is installed.
成功。
Railsアプリケーション起動
下記を実行する。
$ rails server -b $IP -p $PORT
(Cloud9 では特殊な環境変数「$IP」と「$PORT」を使用してIPアドレスとポート番号を動的に割り当てます。コマンドラインでecho $IPまたはecho $PORTと入力すると値を確認できます)
なるほど。解説も親切。
Share → Application と選ぶと起動したRailsアプリケーションが表示できる。
できたできた。
こんな感じで進めていこうかと思うがハマるところ無さすぎて淡々といきそう。