はるか昔にphpで作成したwebサイトをRailsで作り直したい。ということで、まずはRails環境を作ります。Railsに関しては、ずっと前に「Ruby on Rails チュートリアル」を一度やっただけです。
環境作成にあたって、以下のサイトにお世話になりました。
LinuxにRuby on Railsをインストールする | tsuchikazu blog
バージョン情報は以下です。
rbenvのインストール
Ruby環境をバージョン毎に管理してくれる有名なやつ。インストール方法はgithubに載ってます。
GitHub - rbenv/rbenv: Groom your app’s Ruby environment
githubからモジュールをクローンしてきます。
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
ユーザ環境設定ファイルに、システム環境変数の情報とrbnevのinit処理を記載してあげます。
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
ユーザを入り直せば、rbenv使えるようになります。以下はバージョン確認。
$ rbenv -v rbenv 1.1.0-2-g4f8925a
ruby-buildの追加
Rubyを簡単にインストールできるようする、rbenvのプラグインらしいです。これもgithubにインストール方法が載ってます。
GitHub - rbenv/ruby-build: Compile and install Ruby
というか、githubからクローンしてくるだけ。
$ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
$ rbenv install
Usage: rbenv install [-f|-s] [-kpv] <version>
rbenv install [-f|-s] [-kpv] <definition-file>
rbenv install -l|--list
rbenv install --version
-l/--list List all available versions
-f/--force Install even if the version appears to be installed already
-s/--skip-existing Skip if the version appears to be installed already
ruby-build options:
-k/--keep Keep source tree in $RBENV_BUILD_ROOT after installation
(defaults to $RBENV_ROOT/sources)
-p/--patch Apply a patch from stdin before building
-v/--verbose Verbose mode: print compilation status to stdout
--version Show version of ruby-build
For detailed information on installing Ruby versions with
ruby-build, including a list of environment variables for adjusting
compilation, see: https://github.com/rbenv/ruby-build#usage
Rubyのインストール
そうして、Rubyをインストールします。Rails5ではRuby2.2以上が必要のようで、現時点で安定版最新バージョンである2.4.0を入れます。
$ 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 Installing ruby-2.4.0... Installed ruby-2.4.0 to /home/rails/.rbenv/versions/2.4.0 $ rbenv rehash
バージョン確認でインストールされているかどうかを確認。
$ rbenv versions * system (set by /home/rails/.rbenv/version) 2.4.0
適当なディレクトリを作成して、インストールしたRubyバージョンの環境を作成します。
$ mkdir test $ cd test $ rbenv local 2.4.0 $ rbenv versions system * 2.4.0 (set by /home/rails/test/.ruby-version)
Railsのインストール
最後にRailsを入れます。Railsも最新版である5.0.1を入れます。gemを使ってインストール。
$ gem install rails -v 5.0.1 $ rails -v Rails 5.0.1
動作確認のため、適当な新規プロジェクトを作成して、rails serverを起動してみます。
$ rails new yukamaki
(略)
$ rails server
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/xml_mini.rb:51: warning: constant ::Fixnum is deprecated
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/xml_mini.rb:52: warning: constant ::Bignum is deprecated
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.13.7/lib/bundler/runtime.rb:94: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/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/execjs-2.7.0/lib/execjs/runtimes.rb:58:in `autodetect'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/execjs-2.7.0/lib/execjs.rb:5:in `<module:ExecJS>'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/execjs-2.7.0/lib/execjs.rb:4:in `<top (required)>'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/uglifier-3.0.4/lib/uglifier.rb:5:in `require'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/uglifier-3.0.4/lib/uglifier.rb:5:in `<top (required)>'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.13.7/lib/bundler/runtime.rb:91:in `require'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.13.7/lib/bundler/runtime.rb:91:in `block (2 levels) in require'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.13.7/lib/bundler/runtime.rb:86:in `each'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.13.7/lib/bundler/runtime.rb:86:in `block in require'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.13.7/lib/bundler/runtime.rb:75:in `each'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.13.7/lib/bundler/runtime.rb:75:in `require'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.13.7/lib/bundler.rb:106:in `require'
/home/rails/test/yukamaki/config/application.rb:7:in `<top (required)>'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:88:in `require'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:88:in `block in server'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:85:in `tap'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:85:in `server'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/commands.rb:18:in `<top (required)>'
/home/rails/test/yukamaki/bin/rails:9:in `require'
/home/rails/test/yukamaki/bin/rails:9:in `<top (required)>'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.0/lib/spring/client/rails.rb:28:in `load'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.0/lib/spring/client/rails.rb:28:in `call'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.0/lib/spring/client/command.rb:7:in `call'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.0/lib/spring/client.rb:30:in `run'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.0/bin/spring:49:in `<top (required)>'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.0/lib/spring/binstub.rb:31:in `load'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.0/lib/spring/binstub.rb:31:in `<top (required)>'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
/home/rails/.rbenv/versions/2.4.0/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
/home/rails/test/yukamaki/bin/spring:14:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Bundler Error Backtrace:
from /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.13.7/lib/bundler/runtime.rb:90:in `block (2 levels) in require'
from /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.13.7/lib/bundler/runtime.rb:86:in `each'
from /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.13.7/lib/bundler/runtime.rb:86:in `block in require'
from /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.13.7/lib/bundler/runtime.rb:75:in `each'
from /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.13.7/lib/bundler/runtime.rb:75:in `require'
from /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.13.7/lib/bundler.rb:106:in `require'
from /home/rails/test/yukamaki/config/application.rb:7:in `<top (required)>'
from /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:88:in `require'
from /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:88:in `block in server'
from /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:85:in `tap'
from /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:85:in `server'
from /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!'
from /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-5.0.1/lib/rails/commands.rb:18:in `<top (required)>'
from /home/rails/test/yukamaki/bin/rails:9:in `require'
from /home/rails/test/yukamaki/bin/rails:9:in `<top (required)>'
from /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.0/lib/spring/client/rails.rb:28:in `load'
from /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.0/lib/spring/client/rails.rb:28:in `call'
from /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.0/lib/spring/client/command.rb:7:in `call'
from /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.0/lib/spring/client.rb:30:in `run'
from /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.0/bin/spring:49:in `<top (required)>'
from /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.0/lib/spring/binstub.rb:31:in `load'
from /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/spring-2.0.0/lib/spring/binstub.rb:31:in `<top (required)>'
from /home/rails/.rbenv/versions/2.4.0/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/rails/.rbenv/versions/2.4.0/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/rails/test/yukamaki/bin/spring:14:in `<top (required)>'
from bin/rails:3:in `load'
from bin/rails:3:in `<main>'
起動しないですねえ。
「Gem Load Error is: Could not find a JavaScript runtime.」ってメッセージが怪しそうだ、とググってみたら、「Ruby on Rails チュートリアル」に以下の記載が。そんなん覚えてねーし。
第1章 ゼロからデプロイまで | Rails チュートリアル
JavaScriptランタイムがインストールされていないというエラーが表示された場合は、GitHubのexecjsページにあるインストール可能なランタイムの一覧からJavaScriptランタイムを入手してください。 個人的にはNode.jsがおすすめです)。
Node.jsがおすすめとあるので、Node.jsを入れます。入れ方は公式サイトに書いてありました。
Installing Node.js via package manager | Node.js
rootで実行です。
# curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - # yum -y install nodejs
改めてサーバーを起動します。
$ rails server /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/xml_mini.rb:51: warning: constant ::Fixnum is deprecated /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/xml_mini.rb:52: warning: constant ::Bignum is deprecated => Booting Puma => Rails 5.0.1 application starting in development on http://localhost:3000 => Run `rails server -h` for more startup options /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/core_ext/numeric/conversions.rb:138: warning: constant ::Fixnum is deprecated Puma starting in single mode... * Version 3.6.2 (ruby 2.4.0-p0), codename: Sleepy Sunday Serenity * Min threads: 5, max threads: 5 * Environment: development * Listening on tcp://localhost:3000 Use Ctrl-C to stop
あれ、リモートから繋がらんぞ。
デフォルトではローカルホストからしか繋がらないので、ipアドレスをバインド指定して起動する必要があるそうです。「Ruby on Rails チュートリアル」にも書いてありましたね。うん、全く覚えてない。
$ rails server -b 0.0.0.0 /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/xml_mini.rb:51: warning: constant ::Fixnum is deprecated /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/xml_mini.rb:52: warning: constant ::Bignum is deprecated => Booting Puma => Rails 5.0.1 application starting in development on http://0.0.0.0:3000 => Run `rails server -h` for more startup options /home/rails/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/core_ext/numeric/conversions.rb:138: warning: constant ::Fixnum is deprecated Puma starting in single mode... * Version 3.6.2 (ruby 2.4.0-p0), codename: Sleepy Sunday Serenity * Min threads: 5, max threads: 5 * Environment: development * Listening on tcp://0.0.0.0:3000
繋がったー。
