はじめに
基本的に参考サイトに書いている内容を真似してもらえれば、大丈夫です。つまずきそうな部分や、上手くいかない部分を補足的に書いています。
1. centOSをmacに入れる
http://qiita.com/okmn/items/461e5cd3ff234d4b73ff
を参考にして入れてください。
*使わなくなった仮想環境を削除する方法は
http://qiita.com/mochizukikotaro/items/52f4434c3f69c4ba1f54
を参考してください。
2.zshとpreztoを入れる
zshは、補完機能など、bashよりも使いやすいので、入れると便利です。また、preztoはzshをカラフルにデコレーションしてくれるフレームワークで、コマンドが見やすくなります。なので、別にいいって方は、飛ばしても大丈夫です。
2.1 zshのインストール
zshのインストールをします。yumを使うと、腐ったものが入って、preztoが使えないので、ソースから取ってくる必要があります。
$ wget http://sourceforge.net/projects/zsh/files/zsh/5.0.6/zsh-5.0.6.tar.gz
解凍する
$ tar zxvf zsh-5.0.6.tar.gz
$ ls
zsh-5.0.6 zsh-5.0.6.tar.gz
コンパイルしてインストール(おまじない感)
$ cd zsh-5.0.6
$ ./configure --enable-multibyte
$ make
$ sudo make install
無事インストールできたことを確認する。
$ zsh --version
zsh 5.0.6 (x86_64-unknown-linux-gnu)
./configure時にエラーが出た場合
①gccを入れるパターン
configure: error: no acceptable C compiler found in $PATH
というエラーが出た場合
C言語のコンパイラを入れろということなので
$ sudo yum install gcc
をする。
②ncurses-develを入れるパターン
configure: error: "No terminal handling library was found on your system.
This is probably a library called 'curses' or 'ncurses'. You may
need to install a package called 'curses-devel' or 'ncurses-devel' on your
system."
というエラーが出た場合
ncurses-develを入れれば解決できる
$ sudo yum install ncurses-devel
これで、解決!
起動時にインストールしたzshが起動するようにする
zshを使えるようにはなりましたが、毎回毎回zshコマンドを打つのは面倒くさいので、起動時にzshを起動させるために、zshをログインシェルに設定します。
ここで、ログインシェルに設定するには、chsh -s コマンドで、zshのパスを設定してあげれば良いのですが、そのパスが、/etc/shellsというファイルの中に記述されていないと、エラーとなってしまうらしいので記述していきます。実際に見てみるとわかりやすいです。
$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
インストールしたzshのパスは当然ない。
zshのパスを確認する
$ which zsh
/usr/local/bin/zsh
よって、write権限を持っているsudoで、vimを開き書き換える
$ sudo vi /etc/shells #書き換える
$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
/usr/local/bin/zsh #追加した
ここで、ログインシェルを/usr/local/bin/zshに設定する
chsh -s /usr/local/bin/zsh
*注意
パスワードを要求されますが、パスワードとユーザー名は初期ではvagrantです。
2.2 preztoを入れる
まずはgitを追加する(railsをインストールするときにも、gitのインストールをしていますが、ここでしているので、railsの時はとばしてください。)
$ sudo yum install git
zshを起動
$ zsh
公式に載ってるコマンドを実行していく
$ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
#初期設定のファイルを追加する(これもおまじない感)
$ setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done
反映させる(再起動してもいい)
$ source ~/.zshrc
参考
http://yuk.hatenablog.com/entry/2014/09/09/014115
3. ruby on railsを入れる
https://tsuchikazu.net/linux_ruby_on_rails_install/
を参考に入れてください。
詰まったところ
①rbenv installでエラーがでた。
$ rbenv install 2.4.0
Downloading ruby-2.4.0.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.tar.bz2
error: failed to download ruby-2.4.0.tar.bz2
BUILD FAILED (CentOS Linux 7 using ruby-build 20170523-7-g2de7a29)
http://qiita.com/kanuu/items/7efcbec499222802be3b
を参考にして
$ RUBY_BUILD_CURL_OPTS=--tlsv1.2 rbenv install 2.4.0
を打つと、インストールできた。
②echoコマンドがよくわからなかった。
https://eng-entrance.com/linux-command-echo
がとてもわかりやすくて、スッキリ。
③rails newでエラーが出てきた
$rails new railbookと打つと
An error occurred while installing sqlite3 (1.3.13), and Bundler cannot continue.
Make sure that `gem install sqlite3 -v '1.3.13'` succeeds before bundling.
In Gemfile:
sqlite3
run bundle exec spring binstub --all
bundler: command not found: spring
Install missing gem executables with `bundle install`
と、エラーが出てきた。
http://qiita.com/NaokiIshimura/items/dfabac823cbad04d5ace
を参考にすると
sqlite-develを入れるらしい。
# インストール
$ sudo yum -y install sqlite-devel
$ bundle install
...
Bundle complete! 16 Gemfile dependencies, 71 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
$ rails g controller hello
create app/controllers/hello_controller.rb
invoke erb
create app/views/hello
invoke test_unit
create test/controllers/hello_controller_test.rb
invoke helper
create app/helpers/hello_helper.rb
invoke test_unit
invoke assets
invoke coffee
create app/assets/javascripts/hello.coffee
invoke scss
create app/assets/stylesheets/hello.scss
となり、解決できました。
④rails g contoller でいっぱいエラーが出た
$ rails generate controller hello
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:85: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:
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/execjs-2.7.0/lib/execjs/runtimes.rb:58:in `autodetect'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/execjs-2.7.0/lib/execjs.rb:5:in `<module:ExecJS>'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/execjs-2.7.0/lib/execjs.rb:4:in `<top (required)>'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/uglifier-3.2.0/lib/uglifier.rb:5:in `require'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/uglifier-3.2.0/lib/uglifier.rb:5:in `<top (required)>'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:82:in `require'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:82:in `block (2 levels) in require'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:77:in `each'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:77:in `block in require'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:66:in `each'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:66:in `require'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler.rb:108:in `require'
/home/vagrant/railbook/config/application.rb:7:in `<top (required)>'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/command/actions.rb:15:in `require'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/command/actions.rb:15:in `require_application_and_environment!'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/commands/generate/generate_command.rb:19:in `perform'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/thor-0.20.0/lib/thor/command.rb:27:in `run'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/thor-0.20.0/lib/thor/invocation.rb:126:in `invoke_command'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/thor-0.20.0/lib/thor.rb:387:in `dispatch'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/command/base.rb:63:in `perform'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/command.rb:44:in `invoke'
/home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/commands.rb:16:in `<top (required)>'
bin/rails:4:in `require'
bin/rails:4:in `<main>'
Bundler Error Backtrace:
from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:81:in `block (2 levels) in require'
from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:77:in `each'
from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:77:in `block in require'
from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:66:in `each'
from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler/runtime.rb:66:in `require'
from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.15.4/lib/bundler.rb:108:in `require'
from /home/vagrant/railbook/config/application.rb:7:in `<top (required)>'
from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/command/actions.rb:15:in `require'
from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/command/actions.rb:15:in `require_application_and_environment!'
from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/commands/generate/generate_command.rb:19:in `perform'
from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/thor-0.20.0/lib/thor/comman# Use CoffeeScript for .coffee assets and views
d.rb:27:in `run'
from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/thor-0.20.0/lib/thor/invocation.rb:126:in `invoke_command'
from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/thor-0.20.0/lib/thor.rb:387:in `dispatch'
from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/command/base.rb:63:in `perform'
from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/command.rb:44:in `invoke'
from /home/vagrant/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/commands.rb:16:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
http://krs1.hatenablog.com/entry/2016/05/30/120000
を参考にするとGemfileの中にtherubyracerを入れる必要があるらしい
gem 'therubyracer'
bundle installする
$ bundle install
Bundle complete! 17 Gemfile dependencies, 74 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
$ rails g controller hello
create app/controllers/hello_controller.rb
invoke erb
create app/views/hello
invoke test_unit
create test/controllers/hello_controller_test.rb
invoke helper
create app/helpers/hello_helper.rb
invoke test_unit
invoke assets
invoke coffee
create app/assets/javascripts/hello.coffee
invoke scss
create app/assets/stylesheets/hello.scss
となり、解決できました。
⑤localhost:3000/にアクセスできなかった
rails sでサーバーを立ててもブラウザで、
localhost:3000/
にアクセスすると何も表示されない。
http://mokokko.hatenablog.com/entry/2014/05/04/221452
を参考にすると、ネットワーク設定をするらしい。
一度、centOSから出る
$ exit
Vagrantfileを編集する
#次の1行を追加する
config.vm.network "forwarded_port", guest: 3000, host: 3000
Vagrantを再起動する
$ vagrant reload
これで、もう一度$rails s をして、ブラウザで、localhost:3000/
にアクセスすれば、表示できた!
おわりに
色々、つまずいた...