寝て起きて寝て

プログラミングが出来ない情報系のブログ

Railsの環境構築 ~起動にエラーはつきもの?Rails起動編~

環境

centos 6.7 ruby 2.3

導入

bundlerは導入済みとする

bundle init

でGemfileの編集

bundle install --path vendor/bundle/

installが終わったら

bundle exec rails new railbook

で新規アプリケーションの作成をする。

cdで作ったアプリケーション名のディレクトリに移動し

bundle exec rails s

を実行

すると以下の様なエラーが出た

/usr/local/lib/ruby/gems/2.3.0/gems/activesupport-4.0.2/lib/active_support/values/time_zone.rb:282: warning: circular argument reference - now
/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.4/lib/bundler/runtime.rb:89:in `rescue in block (2 levels) in require': There was an error while trying to load the gem 'uglifier'. (Bundler::GemRequireError)
Gem Load Error is: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes.
Backtrace for gem load error is:
/usr/local/lib/ruby/gems/2.3.0/gems/execjs-2.7.0/lib/execjs/runtimes.rb:58:in `autodetect'
/usr/local/lib/ruby/gems/2.3.0/gems/execjs-2.7.0/lib/execjs.rb:5:in `<module:ExecJS>'
/usr/local/lib/ruby/gems/2.3.0/gems/execjs-2.7.0/lib/execjs.rb:4:in `<top (required)>'
/usr/local/lib/ruby/gems/2.3.0/gems/uglifier-3.0.0/lib/uglifier.rb:5:in `require'
/usr/local/lib/ruby/gems/2.3.0/gems/uglifier-3.0.0/lib/uglifier.rb:5:in `<top (required)>'
/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.4/lib/bundler/runtime.rb:86:in `require'
/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.4/lib/bundler/runtime.rb:86:in `block (2 levels) in require'
/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.4/lib/bundler/runtime.rb:81:in `each'
/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.4/lib/bundler/runtime.rb:81:in `block in require'
/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.4/lib/bundler/runtime.rb:70:in `each'
/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.4/lib/bundler/runtime.rb:70:in `require'
/usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.4/lib/bundler.rb:102:in `require'
/home/admin/ruby/rails/railbook/config/application.rb:7:in `<top (required)>'
/usr/local/lib/ruby/gems/2.3.0/gems/railties-4.0.2/lib/rails/commands.rb:74:in `require'
/usr/local/lib/ruby/gems/2.3.0/gems/railties-4.0.2/lib/rails/commands.rb:74:in `block in <top (required)>'
/usr/local/lib/ruby/gems/2.3.0/gems/railties-4.0.2/lib/rails/commands.rb:71:in `tap'
/usr/local/lib/ruby/gems/2.3.0/gems/railties-4.0.2/lib/rails/commands.rb:71:in `<top (required)>'bin/rails:4:in `require'
bin/rails:4:in `<main>'
Bundler Error Backtrace:
        from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.4/lib/bundler/runtime.rb:85:in `block (2 levels) in require'
        from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.4/lib/bundler/runtime.rb:81:in `each'
        from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.4/lib/bundler/runtime.rb:81:in `block in require'
        from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.4/lib/bundler/runtime.rb:70:in `each'
        from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.4/lib/bundler/runtime.rb:70:in `require'
        from /usr/local/lib/ruby/gems/2.3.0/gems/bundler-1.12.4/lib/bundler.rb:102:in `require'
        from /home/admin/ruby/rails/railbook/config/application.rb:7:in `<top (required)>'
        from /usr/local/lib/ruby/gems/2.3.0/gems/railties-4.0.2/lib/rails/commands.rb:74:in `require'
        from /usr/local/lib/ruby/gems/2.3.0/gems/railties-4.0.2/lib/rails/commands.rb:74:in `block in <top (required)>'
        from /usr/local/lib/ruby/gems/2.3.0/gems/railties-4.0.2/lib/rails/commands.rb:71:in `tap'        from /usr/local/lib/ruby/gems/2.3.0/gems/railties-4.0.2/lib/rails/commands.rb:71:in `<top (required)>'
        from bin/rails:4:in `require'
        from bin/rails:4:in `<main>'

調べてみるとどうやらtherubyracerが必要ならしい

アプリケーション内のGemfileを編集。以下を記述する

gem 'therubyracer'

次にbundle updateを実行 bundle update だと全部のバージョンが変わってくるので bundle install を実行すべき

次はこんなエラーがでた。

An error occurred while installing therubyracer (0.12.2), and Bundler cannot continue.
Make sure that `gem install therubyracer -v '0.12.2'` succeeds before bundling.

また調べてみるとgcc-c++が必要?らしい

インストールする

sudo yum install -y ruby20-devel gcc-c++

そしたらまたbundle updateを実行 同じ理由でbundle installを実行しよう

Installing therubyracer 0.12.2 with native extensions
Using activemodel 4.0.2
Using jbuilder 1.5.3
Using actionpack 4.0.2
Using mail 2.5.4
Using sdoc 0.4.1
Using activerecord 4.0.2
Using railties 4.0.2
Using sprockets-rails 2.0.1
Using actionmailer 4.0.2
Using coffee-rails 4.0.1
Using jquery-rails 3.1.4
Using sass-rails 4.0.5
Using rails 4.0.2
Using turbolinks 2.5.3
Bundle updated!

できたっぽい

最後に bundle exec rails sで実行(4.xxの場合はbundle exec いらないかも普通にrails sとかで実行できた)←こいつbundleで環境切り替えてるの理解してないでヤンス

[admin@localhost railbook]$ bundle exec rails s
/usr/local/lib/ruby/gems/2.3.0/gems/activesupport-4.0.2/lib/active_support/values/time_zone.rb:282: warning: circular argument reference - now
=> Booting WEBrick
=> Rails 4.0.2 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2016-05-30 11:52:46] INFO  WEBrick 1.3.1
[2016-05-30 11:52:46] INFO  ruby 2.3.0 (2015-12-25) [x86_64-linux]
[2016-05-30 11:52:46] INFO  WEBrick::HTTPServer#start: pid=4589 port=3000

最後にport3000のアドレスにアクセスする以下のように表示されたら動作確認完了 f:id:krs1:20160530120211p:plain

よかった動いたー 終わり!

参考サイト

pyoonn.hatenablog.com

qiita.com