bash on windowsでRuby on Railsは動くのか試したらダメだった話

[前回の記事](http://qiita.com/Hanocha/items/2306e1f9d735c391d4e0)でbash on windowsの導入ができたので、
Ruby、Railsが導入できるかどうか、またそれらが動くかどうか試してみました。

結論から言うと、**Railsアプリは作成できませんでした。**

もう少し正確に言うと、`rails new`でファイルは作れるけど、`bundle install`が失敗します。

以下にやったこととその経過をまとめておきます。


# やったこと

1. build-esseintialのインストール
2. rbenvとruby-buildのインストール
3. ruby 2.3.1のインストール
4. rake, bundler, railsのインストール
5. railsアプリを生成　<= 失敗


# それぞれの経過

## build-essentialのインストール

`apt-get install build-essential`とすると、開発時に必要なパッケージ、
例えばgccとか、makeとかをまとめてインストールできます。
今回だと、Ruby-buildでRubyをビルド、インストールする際に必要になります。

これは特に問題なく導入できました。

## rbenvとruby-buildのインストール

rbenvとruby-buildをインストールします。

その前に、`git`が標準で入っていたかどうか記憶が曖昧なので、
もし`git clone ...`ができなかったら`apt-get`で導入してください。

導入方法は、それぞれのリポジトリの`README.md`に書いてある標準的なインストール方法に
従うだけで大丈夫でした。

ただし、一つ注意点があります。

rbenvの導入中、`.bash_profile`に設定を追加する手順があります。
`.bash_profile`に記載した設定を再読み込みしなければいけませんが、
シェルのリロードが今ひとつ上手く働きません。
（一回bash on windowsからexitしても設定が反映されない…普通のシェルは反映された気がするのですが）

なので、設定を反映させるために

```
$ source .bash_profile
```

とする必要があります。
設定が反映されたかどうか、`echo $PATH`などでパスが通っているか確認してもいいでしょう。


## Rubyのインストール

rbenvが入ったので次はRubyを入れます。
これも通常のrbenvの使い方通りでいいのですが、いくつか追加で必要なパッケージがあります。
無いとインストール途中で怒られるので、先に入れておきましょう。

```
# sudo apt-get install -y libssl-dev libreadline-dev zlib1g-dev
```

追加のパッケージを導入したらRubyを入れます。ここでは`2.3.1`を入れます。
結構時間がかかりますので、気長に待ちましょう。

```
$ rbenv install 2.3.1
```

導入できたらglobalに設定したり、irb立ち上げて動作確認したりしてもいいでしょう。


## Railsのインストール

遂に来ました。
何も考えずに`rails new`してもいいのですが、gemは`vendor/bundle`に入れたいですよね。

http://qiita.com/youcune/items/222777415f00d19cccb4

こちらを参考にして`rails new`を試みました。

```
--- ERROR REPORT TEMPLATE -------------------------------------------------------
- What did you do?

  I ran the command `/home/hanocha/.rbenv/versions/2.3.1/bin/bundle install --path vendor/bundle`

- What did you expect to happen?

  I expected Bundler to...

- What happened instead?

  Instead, what actually happened was...


Error details

    ArgumentError: parent directory is world writable but not sticky
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/2.3.0/tmpdir.rb:93:in `ensure in mktmpdir'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/2.3.0/tmpdir.rb:95:in `mktmpdir'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/vendor/compact_index_client/lib/compact_index_client/updater.rb:29:in `update'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/vendor/compact_index_client/lib/compact_index_client.rb:64:in `update'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/vendor/compact_index_client/lib/compact_index_client.rb:55:in `update_and_parse_checksums!'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/fetcher/compact_index.rb:65:in `available?'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/fetcher/compact_index.rb:15:in `call'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/fetcher/compact_index.rb:15:in `block in compact_index_request'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/fetcher.rb:154:in `use_api'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/source/rubygems.rb:331:in `block in api_fetchers'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/source/rubygems.rb:331:in `select'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/source/rubygems.rb:331:in `api_fetchers'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/source/rubygems.rb:336:in `block in remote_specs'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/index.rb:10:in `build'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/source/rubygems.rb:335:in `remote_specs'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/source/rubygems.rb:82:in `specs'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/definition.rb:211:in `block (2 levels) in index'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/definition.rb:209:in `each'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/definition.rb:209:in `block in index'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/index.rb:10:in `build'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/definition.rb:206:in `index'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/definition.rb:200:in `resolve'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/definition.rb:140:in `specs'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/definition.rb:129:in `resolve_remotely!'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/installer.rb:195:in `resolve_if_need'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/installer.rb:70:in `run'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/installer.rb:22:in `install'
      /home/hanocha/.rbenv/rbenv.d/exec/gem-rehash/rubygems_plugin.rb:27:in `install'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/cli/install.rb:102:in `run'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/cli.rb:175:in `install'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/vendor/thor/lib/thor.rb:359:in `dispatch'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/vendor/thor/lib/thor/base.rb:440:in `start'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/cli.rb:11:in `start'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/exe/bundle:27:in `block in <top (required)>'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/lib/bundler/friendly_errors.rb:98:in `with_friendly_errors'
      /home/hanocha/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.12.5/exe/bundle:19:in `<top (required)>'
      /home/hanocha/.rbenv/versions/2.3.1/bin/bundle:23:in `load'
      /home/hanocha/.rbenv/versions/2.3.1/bin/bundle:23:in `<main>'

Environment

  Bundler   1.12.5
  Rubygems  2.5.1
  Ruby      2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]
  GEM_HOME  /home/hanocha/workspace/vendor/bundle/ruby/2.3.0
  GEM_PATH
  Git       1.9.1

      Bundler settings

  path
    Set for your local app (/home/hanocha/workspace/.bundle/config): "vendor/bundle"
  disable_shared_gems
    Set for your local app (/home/hanocha/workspace/.bundle/config): true
  orig_path
    Set via BUNDLE_ORIG_PATH: "/home/hanocha/.rbenv/versions/2.3.1/bin:/home/hanocha/.rbenv/libexec:/home/hanocha/.rbenv/plugins/ruby-build/bin:/home/hanocha/.rbenv/shims:/home/hanocha/.rbenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
--- TEMPLATE END ----------------------------------------------------------------

Unfortunately, an unexpected error occurred, and Bundler cannot continue.

First, try this link to see if there are any existing issue reports for this error:
https://github.com/bundler/bundler/search?q=parent+directory+is+world+writable+but+not+sticky&type=Issues

If there aren't any reports for this error yet, please create copy and paste the report template above into a new issue. Don't forget to anonymize any private data! The new issue form is located at:
https://github.com/bundler/bundler/issues/new
```

うん、ダメですね。

ちなみに、普通に`rails new`してもダメでした。
ファイルの作成まではできても、`bundle install`で同じエラーになります。

調べても解決方法が出てこなかったので、とりあえず導入はあきらめました。
解決できるよ！という方は是非方法を教えていただきたいです…よろしくお願いします。