RoR事始めその5

2017/11/23

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.