ほぼ静的なページの作成 | rails チュートリアル 6

第3章 ほぼ静的なページの作成 | Rails チュートリアルの勉強メモです。

静的ページ用のコントローラーを作成する

ページを増やすために、以下のコマンドを叩く

$ bundle exec rails g controller staticpages home help

bundle exec g 動かない

すぐに、なにか作成されると思いきや、まったく動かない。。困った。

なので、ひとまず、Ctrl + Cでとめると以下のログが出力されました。

^C/Users/'ユーザー名'/Works/withterrace/vendor/bundle/ruby/2.4.0/gems/spring-2.0.2/lib/spring/client/run.rb:117:in `gets': Interrupt
  from /Users/'ユーザー名'/Works/withterrace/vendor/bundle/ruby/2.4.0/gems/spring-2.0.2/lib/spring/client/run.rb:117:in `verify_server_version'
  from /Users/'ユーザー名'/Works/withterrace/vendor/bundle/ruby/2.4.0/gems/spring-2.0.2/lib/spring/client/run.rb:62:in `run'
  from /Users/'ユーザー名'/Works/withterrace/vendor/bundle/ruby/2.4.0/gems/spring-2.0.2/lib/spring/client/run.rb:42:in `warm_run'
  from /Users/'ユーザー名'/Works/withterrace/vendor/bundle/ruby/2.4.0/gems/spring-2.0.2/lib/spring/client/run.rb:35:in `call'
  from /Users/'ユーザー名'/Works/withterrace/vendor/bundle/ruby/2.4.0/gems/spring-2.0.2/lib/spring/client/command.rb:7:in `call'
  from /Users/'ユーザー名'/Works/withterrace/vendor/bundle/ruby/2.4.0/gems/spring-2.0.2/lib/spring/client/rails.rb:24:in `call'
  from /Users/'ユーザー名'/Works/withterrace/vendor/bundle/ruby/2.4.0/gems/spring-2.0.2/lib/spring/client/command.rb:7:in `call'
  from /Users/'ユーザー名'/Works/withterrace/vendor/bundle/ruby/2.4.0/gems/spring-2.0.2/lib/spring/client.rb:30:in `run'
  from /Users/'ユーザー名'/Works/withterrace/vendor/bundle/ruby/2.4.0/gems/spring-2.0.2/bin/spring:49:in `'
  from /Users/'ユーザー名'/Works/withterrace/vendor/bundle/ruby/2.4.0/gems/spring-2.0.2/lib/spring/binstub.rb:31:in `load'
  from /Users/'ユーザー名'/Works/withterrace/vendor/bundle/ruby/2.4.0/gems/spring-2.0.2/lib/spring/binstub.rb:31:in `'
  from /Users/'ユーザー名'/Works/withterrace/bin/spring:15:in `require'
  from /Users/'ユーザー名'/Works/withterrace/bin/spring:15:in `'
  from bin/rails:3:in `load'
  from bin/rails:3:in `
'

「bundle exec g 動かない」で、google検索した結果、
rails g が動かなくなったときの回避方法 – コバログの記事などがヒットしました。

いくつか見てみると、springが悪さをしていて、stopで止めれば直ったという記事がいくつかあり、それらのコードを真似てみると、、

$ bundle exec spring stop
Spring stopped.

すると rails g がちゃんと動くようになりました。

$ bundle exec rails g controller staticpages home help
Running via Spring preloader in process 19154
      create  app/controllers/staticpages_controller.rb
       route  get 'staticpages/help'
       route  get 'staticpages/home'
      invoke  erb
      create    app/views/staticpages
      create    app/views/staticpages/home.html.erb
      create    app/views/staticpages/help.html.erb
      invoke  test_unit
      create    test/controllers/staticpages_controller_test.rb
      invoke  helper
      create    app/helpers/staticpages_helper.rb
      invoke    test_unit
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/staticpages.coffee
      invoke    scss
      create      app/assets/stylesheets/staticpages.scss

generateしたページを、元に戻す

$ bundle exec rails destroy controller staticpages home help
Running via Spring preloader in process 19793
      remove  app/controllers/staticpages_controller.rb
       route  get 'staticpages/help'
       route  get 'staticpages/home'
      invoke  erb
      remove    app/views/staticpages
      remove    app/views/staticpages/home.html.erb
      remove    app/views/staticpages/help.html.erb
      invoke  test_unit
      remove    test/controllers/staticpages_controller_test.rb
      invoke  helper
      remove    app/helpers/staticpages_helper.rb
      invoke    test_unit
      invoke  assets
      invoke    coffee
      remove      app/assets/javascripts/staticpages.coffee
      invoke    scss
      remove      app/assets/stylesheets/staticpages.scss

キャメル式でganerateする

$ bundle exec rails generate controller StaticPages home help
Running via Spring preloader in process 19933
      create  app/controllers/static_pages_controller.rb
       route  get 'static_pages/help'
       route  get 'static_pages/home'
      invoke  erb
      create    app/views/static_pages
      create    app/views/static_pages/home.html.erb
      create    app/views/static_pages/help.html.erb
      invoke  test_unit
      create    test/controllers/static_pages_controller_test.rb
      invoke  helper
      create    app/helpers/static_pages_helper.rb
      invoke    test_unit
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/static_pages.coffee
      invoke    scss
      create      app/assets/stylesheets/static_pages.scss

すべて小文字でganerateしたのが、「staticpages_controller」、
対して、キャメルでgenerateしたのが、「static_pages_controller」

確認してみる

routes.rb

Rails.application.routes.draw do
  get 'static_pages/home'
  get 'static_pages/help'

  resources :microposts
  resources :users
  root 'top#index'
end

static_pages_controller.rb

class StaticPagesController < ApplicationController
  def home
  end

  def help
  end
end

うまくできていれば、
http://0.0.0.0:3000/static_pages/home
http://0.0.0.0:3000/static_pages/help
で、それぞれページの確認が可能です。

テスト

$ bundle exec rake test

で、「テスト」ができるようです。

ただし、チュートリアルと同じ文面がなかなか出てこない。。

ひとまず、routes.rbや、controller、viewファイルも作成して、先にすすめることにします。

Rails.application.routes.draw do
  get 'static_pages/about' # 追記
end
class StaticPagesController < ApplicationController
  def about # 追記
  end
end
$ touch app/views/static_pages/about.html.erb

次回は、3.4 少しだけ動的なページから

コメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。

同じカテゴリの前後の記事


  1. KATOON.NET
  2. TRASH
  3. ほぼ静的なページの作成 | rails チュートリアル 6