RoR 事始め その5

rails new からテストサーバによる起動確認

「実践 Ruby on Rails 4」の第4章を参考にさせて頂きました。

(1) 作成した仮想マシン

vagrant ssh

でログインして次を実行

rails new taskapp -d mysql --skip-test-unit

無事にソースコードが生成されたのを確認してから、

cp -rT taskapp /vagrant

でソースを移動。いらなくなったディレクトリは削除

rm -rf ~/taskapp

bundleがnokogiri 1.6.2.1で止まってハマる

前項からの続き。
cd /vagrantでソースディレクトリに移動。

やはり「実践 Ruby on Rails 4」のP.46のGemfileを参考に、 3行目に

ruby 2.1.2

を追記し、あとは同著の説明に従って以下のようにGemfileを修正

source 'https://rubygems.org'

ruby '2.1.2'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.1.0'

# Use mysql as the database for Active Record
gem 'mysql2'

# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.3'

# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'

# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-rails', '~> 4.0.0'

# See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem 'therubyracer',  platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'

# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'

# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'

# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0',          group: :doc

# Spring speeds up development by keeping your application running in the background. Read more:          https://github.com/rails/spring
gem 'spring',        group: :development

# Use ActiveModel has_secure_password
gem 'bcrypt', '~> 3.1.7'

# Use unicorn as the app server
# gem 'unicorn'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

# Use debugger
# gem 'debugger', group: [:development, :test]


gem 'nokogiri', '~> 1.6.1'
gem 'rails-i18n', '~> 4.0.1'

group :test do
    gem 'rspec-rails', '~> 3.0.0.beta2'
    gem 'spring-commands-rspec', '~> 1.0.1'
    gem 'capybara', '~> 2.2.1'
    gem 'factory_girl_rails', '~> 4.4.1'
    gem 'database_cleaner', '~> 1.2.0'
end

上記のようにGemfileを修正、保存したのち、

bundle

を実行した結果、

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

というエラーメッセージが出力されて、bundleが止まってしまった。
ネットで調べてみると、どうやら、 nokogiri 1.6.2.1がインストールできない問題に遭遇
してしまったらしい。

以下のような情報にあたりつつ、解決策を探る。

vagrant で plugin install 時に nokogiri-1.6.2.1 のビルドエラーになるのを回避する術 http://www.hsbt.org/diary/20140522.html

nokogiriをインストールしようとしてlibxmlのエラーが発生 http://qiita.com/mist_dev/items/f93b714d8fbc974bb0dc

Unable to install plugins that depend on nokogiri in Vagrant 1.6+ https://github.com/mitchellh/vagrant/issues/3769#issuecomment-42947813

上記を読み解決の方法を読んでいて、Gemfileの

gem 'nokogiri', '~> 1.6.1'

を、~>を除去して、nokogiriのバージョンを1.6.1を決め打ちで指定すれば
いいのではないか?と思いました。なので、

gem 'nokogiri', '1.6.1'

と修正してから再度、bundleを実行したらうまくいきました。 以下は、bundle実行時のログ

$ vagrant ssh
Last login: Sun Jun 29 15:12:56 2014 from ネカフェのIPなので割愛(^_^);
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$ cd /vagrant
[vagrant@localhost vagrant]$ vi Gemfile
[vagrant@localhost vagrant]$ bundle
Fetching gem metadata from https://rubygems.org/.........
Fetching additional metadata from https://rubygems.org/..
Resolving dependencies...
Using rake 10.3.2
Using i18n 0.6.9
Using json 1.8.1
Using minitest 5.3.5
Using thread_safe 0.3.4
Using tzinfo 1.2.1
Using activesupport 4.1.0
Using builder 3.2.2
Using erubis 2.7.0
Using actionview 4.1.0
Using rack 1.5.2
Using rack-test 0.6.2
Using actionpack 4.1.0
Using mime-types 1.25.1
Using polyglot 0.3.5
Using treetop 1.4.15
Using mail 2.5.4
Using actionmailer 4.1.0
Using activemodel 4.1.0
Using arel 5.0.1.20140414130214
Using activerecord 4.1.0
Using bcrypt 3.1.7
Using bundler 1.6.3
Installing mini_portile 0.5.3
Installing nokogiri 1.6.1
Installing xpath 2.0.0
Installing capybara 2.2.1
Using coffee-script-source 1.7.0
Using execjs 2.2.1
Using coffee-script 2.2.0
Using thor 0.19.1
Using railties 4.1.0
Using coffee-rails 4.0.1
Installing database_cleaner 1.2.0
Installing diff-lcs 1.2.5
Installing factory_girl 4.4.0
Installing factory_girl_rails 4.4.1
Using hike 1.2.3
Using multi_json 1.10.1
Using jbuilder 2.1.1
Using jquery-rails 3.1.1
Installing libv8 3.16.14.3
Using mysql2 0.3.16
Using tilt 1.4.1
Using sprockets 2.11.0
Using sprockets-rails 2.1.3
Using rails 4.1.0
Installing rails-i18n 4.0.2
Using rdoc 4.1.1
Installing ref 1.0.5
Installing rspec-support 3.0.2
Installing rspec-core 3.0.2
Installing rspec-expectations 3.0.2
Installing rspec-mocks 3.0.2
Installing rspec-rails 3.0.1
Using sass 3.2.19
Using sass-rails 4.0.3
Using sdoc 0.4.0
Using spring 1.1.3
Installing spring-commands-rspec 1.0.2
Installing therubyracer 0.12.1
Using turbolinks 2.2.2
Using uglifier 2.5.1
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.