rails sが通らない
rails sが通らない
AWSのAmazon Linuxにrailsをインストールしてrails sしたらこんなエラーが
Warning: You're using Rubygems 2.0.14 with Spring. Upgrade to at least Rubygems 2.1.0 and run `gem pristine --all` for better startup performance. bin/rails:6: warning: already initialized constant APP_PATH /root/r_test/bin/rails:6: warning: previous definition of APP_PATH was here Usage: rails COMMAND [ARGS] The most common rails commands are: generate Generate new code (short-cut alias: "g") console Start the Rails console (short-cut alias: "c") server Start the Rails server (short-cut alias: "s") dbconsole Start a console for the database specified in config/database.yml (short-cut alias: "db") new Create a new Rails application. "rails new my_app" creates a new application called MyApp in "./my_app" In addition to those, there are: destroy Undo code generated with "generate" (short-cut alias: "d") plugin new Generates skeleton for developing a Rails plugin runner Run a piece of code in the application environment (short-cut alias: "r") All commands can be run with -h (or --help) for more information.
そして
rails:update:bin
したら怒られた。というかrakeが通らなかった。
たぶんrakeが通らないのが元凶。
解決
とりあえずRubyのアップデート
2.0.0から最新版へ
面倒だからこれからはroot
$ sudo su -
Rubyをダウンロードしてビルド
wget http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.gz tar xvf ruby-2.2.2.tar.gz cd ruby-2.2.2.tar.gz ./configure make sudo make install
これでrakeできると思ったら
LoadError: cannot load such file -- bundler/setup
bundler/setupがないぞと怒られる。
これでgem install bundlerしようとすると
ERROR: While executing gem ... (Gem::Exception) Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources
またエラーが出る。
今度はopenssl周りか。
gem source -a http://rubygems.org/ gem source -r https://rubygems.org/
を実行します。なんやねんこれ
これでgem installができるようになったので、
gem install bundler
その後railsのディレクトリに戻ってbundle installしようとしたら怒られた。
Rubyをもっかいビルドする。
./configure
make
sudo make install
これでbundle installすると、nokogiriが死んでいた。
この記事見て直す
ただ
gem install nokogiri -- --use-system-libraries=true --with-xml2-config=/usr/bin/xml2-config --with-xslt-config=/usr/bin/xslt-config
実行するだけですが。
これでbundle installしたら通った。
これでrake 通るかと思ったら
rake aborted! ExecJS::RuntimeUnavailable: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. /root/r_test/config/application.rb:7:in `<top (required)>' /root/r_test/Rakefile:4:in `<top (required)>' (See full trace by running task with --trace)
Gemfileからgem 'therubyracer', platforms: :rubyをコメントインしてbundle install
エラーが出た
Building native extensions. This could take a while... ERROR: Error installing therubyracer: ERROR: Failed to build gem native extension. /usr/local/bin/ruby -r ./siteconf20150711-31157-y2v8q8.rb extconf.rb checking for main() in -lpthread... yes creating Makefile make "DESTDIR=" clean make "DESTDIR=" compiling accessor.cc make: g++: Command not found make: *** [accessor.o] Error 127 make failed, exit code 2 Gem files will remain installed in /usr/local/lib/ruby/gems/2.2.0/gems/therubyracer-0.12.2 for inspection. Results logged to /usr/local/lib/ruby/gems/2.2.0/extensions/x86_64-linux/2.2.0-static/therubyracer-0.12.2/gem_make.out
ここを見てtherubyracerをインストール
だんだんtherubyracerのracerがcancerに見えてきた。
コンパイラの問題か。
yum install gcc-c++
これで
gem install therubyracer
が通った。
これでrakeが通ると思ったら
Sorry, you can't use byebug without Readline. To solve this, you need to rebuild Ruby with Readline support. If using Ubuntu, try `sudo apt-get install libreadline-dev` and then reinstall your Ruby. rake aborted! LoadError: cannot load such file -- readline /root/r_test/config/application.rb:7:in `<top (required)>' /root/r_test/Rakefile:4:in `<top (required)>' (See full trace by running task with --trace)
Readlineないんやね。
gem 'rb-readline'
これでrakeが通った。
rail s
通った。