UbuntuでもRailsがうまく動いてくれない→解決

このあいだ Windows7 64bit で Rails が動いてくれない話を書いた。Ubuntu ではうまくいくかと思ったら話はそう簡単じゃなかった。

このあいだと同じように、書籍を管理するアプリを作ることにする。

takatoh@nightschool:~/w/$ rails new Librarian

本来ならこれだけで Rails サーバを起動できるようになるはず。ところが、

takatoh@nightschool:~/w/$ cd Librarian
takatoh@nightschool:~/w/Librarian$ rails server
/home/takatoh/.rvm/gems/ruby-2.1.1/gems/execjs-2.2.1/lib/execjs/runtimes.rb:51:in autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
	from /home/takatoh/.rvm/gems/ruby-2.1.1/gems/execjs-2.2.1/lib/execjs.rb:5:in '
	from /home/takatoh/.rvm/gems/ruby-2.1.1/gems/execjs-2.2.1/lib/execjs.rb:4:in '
	from /home/takatoh/.rvm/gems/ruby-2.1.1/gems/uglifier-2.5.1/lib/uglifier.rb:3:in require'
	from /home/takatoh/.rvm/gems/ruby-2.1.1/gems/uglifier-2.5.1/lib/uglifier.rb:3:in '
	from /home/takatoh/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.6.3/lib/bundler/runtime.rb:76:in require'
	from /home/takatoh/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.6.3/lib/bundler/runtime.rb:76:in block (2 levels) in require'
	from /home/takatoh/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.6.3/lib/bundler/runtime.rb:72:in each'
	from /home/takatoh/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.6.3/lib/bundler/runtime.rb:72:in block in require'
	from /home/takatoh/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.6.3/lib/bundler/runtime.rb:61:in each'
	from /home/takatoh/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.6.3/lib/bundler/runtime.rb:61:in require'
	from /home/takatoh/.rvm/gems/ruby-2.1.1@global/gems/bundler-1.6.3/lib/bundler.rb:132:in require'
	from /home/takatoh/w/Librarian/config/application.rb:7:in '
	from /home/takatoh/.rvm/gems/ruby-2.1.1/gems/railties-4.1.4/lib/rails/commands/commands_tasks.rb:79:in require'
	from /home/takatoh/.rvm/gems/ruby-2.1.1/gems/railties-4.1.4/lib/rails/commands/commands_tasks.rb:79:in vblock in server'
	from /home/takatoh/.rvm/gems/ruby-2.1.1/gems/railties-4.1.4/lib/rails/commands/commands_tasks.rb:76:in tap'
	from /home/takatoh/.rvm/gems/ruby-2.1.1/gems/railties-4.1.4/lib/rails/commands/commands_tasks.rb:76:in server'
	from /home/takatoh/.rvm/gems/ruby-2.1.1/gems/railties-4.1.4/lib/rails/commands/commands_tasks.rb:40:in run_command!'
	from /home/takatoh/.rvm/gems/ruby-2.1.1/gems/railties-4.1.4/lib/rails/commands.rb:17:in '
	from /home/takatoh/w/Librarian/bin/rails:8:in require'
	from /home/takatoh/w/Librarian/bin/rails:8:in '
	from /home/takatoh/.rvm/gems/ruby-2.1.1/gems/spring-1.1.3/lib/spring/client/rails.rb:27:in load'
	from /home/takatoh/.rvm/gems/ruby-2.1.1/gems/spring-1.1.3/lib/spring/client/rails.rb:27:in call'
	from /home/takatoh/.rvm/gems/ruby-2.1.1/gems/spring-1.1.3/lib/spring/client/command.rb:7:in call'
	from /home/takatoh/.rvm/gems/ruby-2.1.1/gems/spring-1.1.3/lib/spring/client.rb:26:in run'
	from /home/takatoh/.rvm/gems/ruby-2.1.1/gems/spring-1.1.3/bin/spring:48:in '
	from /home/takatoh/.rvm/gems/ruby-2.1.1/gems/spring-1.1.3/lib/spring/binstub.rb:11:in load'
	from /home/takatoh/.rvm/gems/ruby-2.1.1/gems/spring-1.1.3/lib/spring/binstub.rb:11:in '
	from /home/takatoh/w/Librarian/bin/spring:16:in require'
	from /home/takatoh/w/Librarian/bin/spring:16:in '
	from bin/rails:3:in load'
	from bin/rails:3:in main'

こんな具合にエラーになってしまう。
エラートレースの最初の方に「Could not find a JavaScript runtime.」と書いてある。これが原因らしいので、ググってみるとそのものズバリのページが見つかった。
 cf. rails server 時に `autodetect’: Could not find a JavaScript runtime が出たら。
これによると、therubyracer という gem をインストールするための記述が Gemfile でコメントアウトされているのを、修正してインストールしてやればいいらしい。

gem 'therubyracer', platforms: :ruby

これで bundle install

takatoh@nightschool:~/w/Librarian$ bundle install
(略)

さあ、うまくいくかな?

takatoh@nightschool:~/w/Librarian$ rails server
=> Booting WEBrick
=> Rails 4.1.4 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)
=> Ctrl-C to shutdown server
[2014-07-06 06:31:57] INFO  WEBrick 1.3.1
[2014-07-06 06:31:57] INFO  ruby 2.1.1 (2014-02-24) [x86_64-linux]
[2014-07-06 06:31:57] INFO  WEBrick::HTTPServer#start: pid=21228 port=3000
rails-welcome-aboard

うまくいった!

Ubuntuの日本語のディレクトリ名を英語にした

Ubuntu のホームディレクトリ以下には、「ドキュメント」とか「デスクトップ」とか日本語の名前がついたディレクトリがある。分かりやすいといえばそのとおりではあるんだけど、cd で移動しようとするといちいち日本語変換しなきゃいけないのが面倒。そこでググってみたら、日本語ディレクトリ名を英語表記に変えられることが分かった。

 cf. Ubuntu 14.04 LTSをインストールした直後に行う設定 & インストールするソフト

このページの手順の通り、コンソールから次のコマンドを打ち込む。

takatoh@nightschool:~$ env LANGUAGE=C LC_MESSAGES=C xdg-user-dirs-gtk-update

するとダイアログが開いて、日本語ディレクトリ名を英語にするかと訊かれるので、Update Names ボタンを押す。
一旦ログアウトして再度ログインすると、今度は英語を日本語にするか、と訊かれるので、「次回から表示しない」にチェックを入れて「古い名前のままにする」ボタンを押す。
これでOK、と思ったら「ピクチャ」と「ダウンロード」だけ日本語のままで残ってる。Pictures と Downloads ディレクトリはあるにも関わらず。仕方がないから手で削除した。

新しいPCが届いたのでWindows7とUbuntuのデュアルブートにした

このあいだ、Ubuntu を VirtualBox にインストールして少し使ってみたけど、なかなかよさ気な感触だったので、新しく買った PC を Windows7 Proffesional と Ubuntu 14.04 LTS のデュアルブートにした。以下、手順のメモ。

PC の起動ドライブの順序を変える

PC の起動中に F2 キーを押して BIOS の画面に移る。で、起動ドライブの順序を内部 HD より CD/DVD が先になるように設定。これで「Ubuntu で始める Linux 入門キット」についていた DVD から起動できるようになった。

パーティションを分割して Ubuntu をインストール

DVD から起動して、インストールを選択する。プリインストールされている Windows7 が検出されてどうするか訊かれるので、Windows とは別にインストールする、を選ぶ。そうするとパーティションを設定する画面になるので、約 200GB を Ubuntu 用に分けた。あとは順番にボタンを押していくだけだ。時間は結構かかるけど、別に難しいところはなかった。まあ、こないだ一回やってるしね。

Ruby と Sublime text 3 と Git をインストール

兎にも角にもこの3つは最初にインストールしなきゃ。Ruby は 2.1.1 を rvm でインストールしたけど、これについてはこのあいだ書いたので省略。あ、ひとつ書いとかなきゃいけないのが、新しく起動したコンソールでは rvm の設定が無効になってるってこと。どうもコンソールの起動時に .bash_profile を読んでいないらしい。bash --login と入力することで有効にできるけど、これは後で調べておかねば。

Sublime text 3 は公式ページから、Ubuntu 64bit 用のバイナリをダウンロードして、インストールした。
 cf. http://www.sublimetext.com/3
Sublime text 自体のインストールは簡単で問題なく終了。あとはパッケージのインストールだけど、↓ここのページが役に立った。
 cf. ubuntu (Xubuntu) 14.04LTS で SublimeText3 の基本(共通)セッティング – けいれん現象の幽玄美よ
とくに Japanize と SublimeMozcInput のインストールのところ。パッケージインストーラで Japanize をインストールし終わるとその後の設定の説明が表示されるんだけど、この説明が Windows 向けの説明なので、ファイルをどこにコピーすればいいのか、このページを見なければわからなかった。
もうひとつ、ひっかかったのが日本語入力。コンソールでは日本語が入力できていたので Sublime Text 3 でも行けるのかと思ったらそうじゃなかった。まずは mozc と emacs-mozc をインストールしなくちゃいけないようだ。上に書いたようにコンソールでは日本語入力ができれるので mozc はインストール済み。で、emacs-mozc は次のようにコンソールからインストールした。

takatoh@nightschool:~$ sudo apt-get install emacs-mozc

その上で次の手順でインストール。

  1. 「ctrl + shift + p」でPackage Controlを開く
  2. 「package」と入力し「Package Control:Add Repository」を選択
  3. 「https://github.com/yasuyuky/SublimeMozcInput」をリポジトリ登録して[Enter]
  4. 「ctrl + shift + p」でPackage Controlを開く
  5. 「install」と入力し「Package Control:Install Package」を選択
  6. 「MozcInput」と入力「SublimeMozcInput」を選択しダウンロード

これでやっと日本語入力ができるようになった!
sublime-japanese

さて、つぎは Git のインストール。これもコンソールから。

takatoh@nightschool:~$ sudo apt-get install git
takatoh@nightschool:~$ sudo apt-get install gitk

そんでもって Windows から SSH のキーを .ssh ディレクトリごと ~/.ssh に持ってきて完了。

DropBox

最後に DropBox についても書いておこう。基本的には↓ここに書いてある通りにやればいい。
 cf. https://www.dropbox.com/ja/install?os=linux
Ubuntu(.deb) 64-bit をダウンロードすればいいようだけど、その下にコマンドラインでのインストール法が書いてあったので、その手順でやった。

takatoh@nightschool:~$ wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -

で、デーモンを起動するらしい。

takatoh@nightschool:~$ ~/.dropbox-dist/dropbox

これでいいのかな。

さて、今日はここまで。

Ubuntuにさわってみた

昨日、Amazon で見つけて思わずポチった「UbuntuではじめるLinus入門キット」ていう本が届いたので、早速触ってみた。なんか最近 Heroku やったり Node.js やったり忙しいな。今年は Scheme の年じゃなかったのかよ。
本には最新版の LTS(長期サポート版)の 14.04 のディスクがついていて、すぐにでも始められる、と。最初はディスクから起動しようとしたけどダメだった。なんか知らないけど、BIOS の画面に移行するスキも与えずに Windows が起動してしまう。DELL の PC ってこういうもんなの?

それで VirtualBox にインストールしてみることにした(ディスクには VirtualBox 用のイメージが入っている。ついでに VirtualBox もアップデートした)。
VirtualBox マネージャーから新しい VM を作って、途中で「すでにある仮想ハードドライブファイルを使用する」にチェック、本のディスクからコピーして解凍したイメージファイルを指定すれば OK。
VM を起動すると、おお、なんかかっこいい。

あとはとりあえず、Ruby(2.1.1)と Sublime Text をインストールして、挨拶代わりに Ruby スクリプトを書いてみた。

ruby-on-Ubuntu

参考にしたのは以下のページ。
 cf. Rubyプログラミングを始めるための基礎知識とインストール (2/3) – @IT
 cf. ubuntu (Xubuntu) 14.04LTS で SublimeText3 の基本(共通)セッティング – けいれん現象の幽玄美よ

[amazonjs asin=”4798041343″ locale=”JP” title=”Ubuntuではじめる! Linux入門キット 14.04対応”]

追記

Ruby 2.1.1 のインストールについて書いておこう。といっても上の @IT のページの通りにやっただけだけど。
まずは curl のインストール。

takatoh@nightschool:~$ sudo apt-get install curl

つづいて RVM のインストール。

takatoh@nightschool:~$ \curl -sSL https://get.rvm.io | bash -s stable
takatoh@nightschool:~$ source ~/.bash_profile

そんでもって Ruby 2.1.1 のインストール。

takatoh@nightschool:~$ rvm install ruby-2.1.1 --default
takatoh@nightschool:~$ source ~/.bash_profile

これで OK。