読者です 読者をやめる 読者になる 読者になる

TakayukiKoyama Geek Blog

Create, Entertain, Experience

AWS(EC2)+Rails+MySQLでrails generate が動かない?

Ruby on Rails AWS

EC2でrails newした後にrails generateするとフリーズする話

サーバ環境

rails generate model をやってみる。

 rails new myappでアプリを作ってあるとして、cd myappした後にgenerateするとログも出ずそのままになってしまった。

$ rails generate model test name

(動かないのでCtrl+C)
/home/ec2-user/.rvm/gems/ruby-2.0.0-p481/gems/spring-1.1.3/lib/spring/client/run.rb:54:in `gets': Interrupt
    from /home/ec2-user/.rvm/gems/ruby-2.0.0-p481/gems/spring-1.1.3/lib/spring/client/run.rb:54:in `verify_server_version'
    from /home/ec2-user/.rvm/gems/ruby-2.0.0-p481/gems/spring-1.1.3/lib/spring/client/run.rb:25:in `call'
    from /home/ec2-user/.rvm/gems/ruby-2.0.0-p481/gems/spring-1.1.3/lib/spring/client/command.rb:7:in `call'
    from /home/ec2-user/.rvm/gems/ruby-2.0.0-p481/gems/spring-1.1.3/lib/spring/client/rails.rb:23:in `call'
    from /home/ec2-user/.rvm/gems/ruby-2.0.0-p481/gems/spring-1.1.3/lib/spring/client/command.rb:7:in `call'
    from /home/ec2-user/.rvm/gems/ruby-2.0.0-p481/gems/spring-1.1.3/lib/spring/client.rb:26:in `run'
    from /home/ec2-user/.rvm/gems/ruby-2.0.0-p481/gems/spring-1.1.3/bin/spring:48:in `<top (required)>'
    from /home/ec2-user/.rvm/gems/ruby-2.0.0-p481/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `load'
    from /home/ec2-user/.rvm/gems/ruby-2.0.0-p481/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `<top (required)>'
    from /home/ec2-user/ienaka/bin/spring:16:in `require'
    from /home/ec2-user/ienaka/bin/spring:16:in `<top (required)>'
    from bin/rails:3:in `load'
    from bin/rails:3:in `<main>'

 Ctrl+Cをすると何か出た。ただ、これエラー原因じゃなくてただのログだと思ってたので何が原因かさっぱり気付かなかった。ちなみにscaffoldも動かなかった。

解決策

 stackoverflow先生のお力をお借りして調べたところ、以下のQAを見つけた。

 Ruby on Rails: permission denied when using "rails generate controller welcome" - Stack Overflow

Do you have the same or similar problems, when you remove the spring gem from your Gemfile, run the bundle command and try generating a controller again? – DMKE May 23 at 8:14

 どうやら、gemのspringがいけないらしい。Ctrl+Cのログはある意味エラーログだった。ということで、Gemfileのspringをコメントアウトした。

$ vim Gemfile
# gem 'spring',        group: :development

$ bundle
$ rails g model test name
  invoke  active_record
  create    db/migrate/20140608093220_create_tests.rb
  create    app/models/test.rb
  invoke    test_unit
  create      test/models/test_test.rb
  create      test/fixtures/tests.yml

 とりあえず、できた。

 ただ疑問なのはさくらVPSでは全く同じ状況下でspringをコメントアウトしなくても動いてたこと。なんなんだろうか。

springとは

 rails/spring

 Railsで作ったアプリケーションをバックグラウンドで走らせておくことで高速化するらしい。色んなブログを見る限りでも入れておいた方が良さそうなのでgenerateするとき以外は動かしておいた方がいいのかもしれない。

広告を非表示にする