Nitrous.ioでRubyのバージョンを変更する(そしてハマる)
Rails Tutorialも5章に入りましたが、いつものようにrails s
したら、
$ rails s -b 0.0.0.0 -p 4000 # ちょっとこういうオプションつけてます。 Your Ruby version is 2.1.1, but your Gemfile specified 2.0.0
怒られましたがな。Herokuは2.0.0推奨とのことでGemfileにruby '2.0.0'
と記述したんですが、Nitrous.ioでは2.1.1
使ってたんだった。
nitrousio - Issue with RVM in Nitrous.io's console - Stack Overflow
Rubyのバージョン管理をrvmからChrubyに変えたようですな。
Nitrousにはpartsコマンドというのがあるのですが、しっちゃかめっちゃかした上に、上部にあるAutoparts
を使ったので、ここは補足ということで・・・
partsコマンドを使ってインストール
Nitrous.ioで使用するRubyのバージョンを変更する - Qiita
使えるRubyのバージョンを確認。
$ parts search ruby chruby (0.3.8) Chruby: Changes the current ruby ruby2.1 (2.2.0) Ruby 2.2.0: A dynamic programming language with a focus on simplicity and productivity. ruby2.0 (2.0.0-p576) Ruby 2.0.0: A dynamic programming language with a focus on simplicity and productivity. ruby1.9 (1.9.3-p547) Ruby 1.9.3: A dynamic programming language with a focus on simplicity and productivity. ruby2.2 (2.2.0) Ruby 2.2.0: A dynamic programming language with a focus on simplicity and productivity. ruby_install (0.4.1) Ruby Install: Installs Ruby, JRuby, Rubinius, MagLev or MRuby
ここ
ruby2.0 (2.0.0-p576) Ruby 2.0.0: A dynamic programming language with a focus on simplicity and productivity.
2.0(2.0.0)もあるようですな。
$ parts install ruby2.0
しかし、いつまでたってもActivating...のままで止まっている。ここでかなり困惑です。うーむ。
注意点
なのでコマンドでなく上部にあるAutoparts
からインストールを試みました。そこでも止まってしまったのですが、よく見るとDONEボタンが出ている。インストールされているのか?
chrubyで確認、そして再起動
$ chruby ruby-2.1.1
のままです。ここでBoxを再起動させてみます。
$ chruby * ruby-2.0.0-p576 ruby-2.1.1 $ ruby -v ruby 2.0.0p576 (2014-09-19 revision 47628) [x86_64-linux]
入ってるみたいだなあ? Autopartsで見ても、ボタンがuninstallになっているので、インストールされたのだろうと。
ホームはこれでいいようですが、ここでアプリに入ってみるとまだ2.1.1のようなので、アプリ側の.ruby-version
に以下のように記述($ echo ruby-2.0.0-p576 > .ruby-version
でやっている例が多いようですがviで直接編集したような希ガスw)
$ ruby-2.0.0-p576
そして確認。
$ ruby -v ruby 2.0.0p576 (2014-09-19 revision 47628) [x86_64-linux] $ chruby * ruby-2.0.0-p576 ruby-2.1.1
Rubyはバージョン毎にパッケージを管理しているので、バージョンを変更した際に、使いたいパッケージを再度インストールする必要があります。
ということでパッケージの入れ直しです。
gem入れ直し
$ gem install railties
としたのですが始まらん・・・どころかKilled
されてしまいました。gem install rails
でもダメだ。
というわけでいったん、AutopartsでRuby2.0.0を削除して、再起動しました。
そしてまた上記のようにRubyを入れ直して・・・また
$ gem install railties
今度は始まってくれましたが、
Building native extensions. This could take a while...
で時間がかかっております。しかし忍耐だ。「怠惰・短気・傲慢」なんて嘘っぱちだよね!
やっと通った(T_T)
$ gem which bundler ERROR: Can't find ruby library file or shared library bundler
bundlerない!うへえ
rails,bundlerどっちから先なんだろ。えーいrails
だ。
$ gem install rails -v 4.2.0
最新のRails Tutorialのバージョンに合わせ、4.2.0
をインストール。
始まらん! Cloud IDEのせいなのか。リアクションがどうしても遅いですね。
よし通った! bundlerも入ってるみたいなのでbundle
だ! その前に一応Gemfileからruby '2.0.0'
を削除しておいてと。
Fetching gem metadata from https://rubygems.org/......... Fetching version metadata from https://rubygems.org/..
うん、時間かかってるぞ!
おお、rakeインストールして・・・いいぞ!その調子だ!(テンションがおかしくなってる)
今まで使っていたgemの数々を・・・数々をインストールしてくれていますぞ〜。
よっしゃ! 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.
なんか怒られているが、なんとか表示できてるぞ。そういえばSpringを使うようにしてたんだっけ。
RubyGemsをupdate
$ gem -v # version確認 2.0.14 $ gem update --system # アップデート
その後
$ gem -v
2.4.5
$ gem pristine --all
gem pristine
に関しては
Rubyのパッケージマネジメントシステムgem(Rubygems)のコマンド一覧
gem pristine gemの隠し場所にあるファイルからインストールしたgemを初期状態へ戻す
study-note/gemのpristine.md at master · YuheiNakasaka/study-note · GitHub
gem pristineとはgemの隠し場所にあるファイルからインストールしたgemを初期状態へ戻す、ことができる。
つまり、gemのcacheを消して元の初期状態としてインストールし直すという意味。
すると・・・
Building native extensions. This could take a while...
またお前か。しかし忍耐。
一応通ったがしかし、nokogiri関係で怒られとる。え、でも今は必要ないんだよなあ・・・。
Team Nokogiri will keep on doing their best to provide security updates in a timely manner, but if this is a concern for you and want to use the system library instead; abort this installation process and reinstall nokogiri as follows: gem install nokogiri -- --use-system-libraries [--with-xml2-config=/path/to/xml2-config] [--with-xslt-config=/path/to/xslt-config] If you are using Bundler, tell it to use the option: bundle config build.nokogiri --use-system-libraries bundle install
Bundler使ってるなら、このオプションつけてみな! みたいに言われているので
$ bundle config build.nokogiri --use-system-libraries $ bundle install
忍耐の末・・・通った・・・。
... Installing nokogiri 1.6.6.2 ...
インストールもされているようだ、がしかしrails s
すると
Warning: Running `gem pristine --all` to regenerate your installed gemspecs (and deleting then reinstalling your bundle if you use bundle --path) will improve the startup performance of Spring.
んーまたなんか言われているが、画面は表示されているぞ。つ、疲れた・・・。
Springに関するWARNING
Railsの開発効率をあげる - Springを使ってRailsのコンソールコマンドの実行を早くする - Rails Webook
Rails - spring を使ってテスト高速化 - Qiita
bin/spring が新規追加され、bin/rails, bin/rake にspringをloadするコードが追加される。
んー、それはよさそうなんだけどなあ・・・警告が気になる。
$ rm -rf .bundle && bundle
.bundle
という隠しファイルがあるので(アプリのルートディレクトリ内)上記コマンドを打ってみる。
・・・それでも出ますがな。
ついでにhomeのほうの.bundleもさくっと消してしまったw でも相変わらず。どうしようw
結論:あきらメロン
Spring with Rspec and Guard for speedy testing
Long story short, you have to live with with this warning message for now.
「要するに、これからこの警告メッセージと付き合っていかなきゃいけないね!」 みたいな?
まあエラーではないんだけど・・・。
ここまでに何時間もかかった・・・そんなバナナ・・・。
ついでに
chruby と ruby-install で複数バージョンの Ruby を切り替えて使う (Ubuntu 編) - Rails 雑感 - Ruby on Rails with OIAX
Ruby の切り替え方法は2種類あります。1つは chruby 2.1.2 のようにコマンドで切り替える方法、もう1つはディレクトリに .ruby-version という隠しファイルを作って、そこにバージョン番号を書いておくという方法です。後者の方法を採用した場合、その隠しファイルが存在するディレクトリおよびそのサブディレクトリでのみ、そこに書かれたバージョン番号の Ruby が使用されます。
アプリごとにデフォルトで使用するバージョンを使いわけることもできるわけですな。例えば
~/workspace/sample_app$ echo ruby-2.0.0-p576 > .ruby-version
sample_app
では2.0.0
を使いますよ。ということもできる。
その他参考記事:
Gamburtsev: [memo] Terminal を開くとchruby: unknown Ruby: 2.0.0-p195