カテゴリ: Server
投稿者: terada
※ 結局Rails3アプリケーションを動作させるところまではいけていません…。

-

前回までで、一応CORESERVERにRails3のインストールは完了しました。 rails new testapp などのようにしてアプリケーションの作成までは問題なくできたのですが、generateコマンドを実行しようとしたときにエラーが出てしまいました。

例えば、
rails generate model hoge title:string

としたときに、
'autodetect': Could not find a JavaScript runtime.

というエラーが出ます。

この記事などでは、Gemfileに下記のような記述をしてbundleをし直すことで回避できるとありました。エラー文の中に「See https://github.com/sstephenson/execjs for a list of available runtimes.」とあったので、こちらを参照すると、ExecJSにはランタイムJavascript(RubyからJavascriptを実行するエンジンのようなもの?)が必要で、READMEの中にいくつか候補があり、そのなかにtherubyracerがありました。

gem 'therubyracer'
gem 'execjs'

※ 私の環境ではexecjsは、はじめからバンドルされていたので、2行目は省略しました。
Gemfileを上書き保存したら、下記を実行します。
bundle install

が、私の環境ではbundle show で確認すると、きちんと2つともバンドルされているはずなのに同じエラーが出ました。「therubyracer」が、どうもうまく読み込めていないのかもしれません。他の記事を参考に、Node.jsを入れてみるとうまく行きました。

Node.jsのインストール
cd ~
mkdir lib/nodejs
cd tmp
git clone http://github.com/ry/node.git
cd node
export PREFIX=~/lib/nodejs
./configure
make
make install
echo "export PATH=~/lib/nodejs/bin:$PATH" >> ~/.bashrc


どうしてバンドルされているはずのtherubyracerが認識されていないのか、しっかり原因を突き止めてられておらずちょっと気持ち悪いのですが、とりあえずRails3はランタイムJavascriptが必要ということだけ頭に入れておいて、先に進みたいと思います。

参考:
"Could not find a JavaScript runtime" と Rails 3.1 起動に失敗する件


【追記】もしかしたら、※の部分で、2行目を省略しなかったらもしかしたらうまくいっていたのかも。依存関係を考えると実行順序が間違っていた可能性もあるかもしれない・・・。
カテゴリ: Server
投稿者: terada
※ 結局Rails3アプリケーションを動作させるところまではいけていません…。

-

CORESERVERにgemをインストールします。最新のバージョンはこちらで確認してください。今回は、v1.8.11をインストールしました。

3行目でパッケージの取得用に tmp という一時的なディレクトリを作成していますが、既にある場合は次の行に進んでください。
最後の行で ~/lib/gem というフォルダへインストールしています。

ssh 【ログイン名】@【ホスト名】
mkdir lib/gem
mkdir tmp
cd tmp
wget http://production.cf.rubygems.org/rubygems/rubygems-1.8.11.tgz
tar zxvf rubygems-1.8.11.tgz
cd rubygems-1.8.11
ruby setup.rb --prefix=$HOME/lib/gem/


これでインストール完了でした。
何故かパスを通さなくてもOKだったのが謎です・・・。もしかして、最初から入っていたのでしょうか。下記のコマンドでバージョンが確認できない場合は、こちらの記事に習って $HOME/lib/gem/ へのパスを通してみてください。

gem -v




Railsをインストール。

gem install rails


これでCORESERVERにRails 3.1.1がインストールできました。


参考:
レンタルサーバでRuby on Railsをインストール
カテゴリ: Server
投稿者: terada
※ 結局Rails3アプリケーションを動作させるところまではいけていません…。

-

2011年11月現在、CORESERVERにはRuby1.8.5が標準でインストールされています。ただ、Rails3を動作させるためには1.8.7以上が必要なので、これをアップグレード(というか、別バージョンのRubyのインストールを)したいと思います。

手順としては、
1)SSHでリモートに接続
2)インストールしたいrubyのパッケージをダウンロード
3)インストール先を指定してインストール
4)パスを通す

です。

1)SSHでリモートに接続

ssh 【ログイン名】@【ホスト名】


2)インストールしたいrubyのパッケージをダウンロード

リモートのユーザのホームディレクトリにインストール先ディレクトリの作成し、パッケージを一時的に置くためのディレクトリ作成します。

mkdir lib
mkdir lib/ruby
mkdir tmp


tmpにrubyのパッケージを持って解凍します。
rubyの最新バージョンをこちらで確認して、バージョン名などは適宜変更してください。

cd tmp
wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.gz
tar zxvf ruby-1.8.7-p249.tar.gz



3)インストール先を指定してインストール

解凍したディレクトリに移動して、インストール先に2で作成したディレクトリ(~/lib/ruby)を指定します。

cd ruby-1.8.7-p249
./configure -prefix=/virtual/【ログイン名】/lib/ruby


インストールします。

make
make install

~/lib/ruby を確認すると、いくつかのディレクトリが作成されているはずです。もし作成されていなければ、手順を確認してください。

OKでしたら、次の手順のためにユーザのホームディレクトリに移動します。

cd ~



4)パスを通す

3でインストールした ~/lib/ruby/bin/ を環境変数として登録するために.bashrcに書き込みます。
FTPソフトでpublic_htmlディレクトリと同階層に .bashrc があるか確認してください。
なければ、そのままFTPソフトから新規ファイルを作成して「.bashrc」という名前にするか、
以下のコマンドでファイルを作成します。

touch .bashrc

次に、このファイルに内容を書き込みます。

echo "export PATH=$HOME/lib/ruby/bin/:$PATH" >> .bashrc

.bashrc を確認すると、$HOMEや$PATHの部分がそれぞれの環境に応じて置き換えられた文字列が出力されているはずです。

例↓
export PATH=/virtual/【ログイン名】/lib/ruby/bin/:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin:/usr/local/mysql/bin:/usr/local/mysql/libexec:/usr/local/pgsql/bin


これで、パスが通ったので、バージョンを確認してみましょう。

ruby -v


お目当てのバージョンが出力されていたら完了です。


参考:
CORESERVERでMechanize-0.9.3を動かす
CORESERVER に Ruby 1.8.7 をインストール