今どき Docker じゃなくて、Mac に Rails 環境を作る方法。
グローバルで使う Ruby の設定
$ rbenv global 2.6.1
$ rbenv rehash
$ ruby -v
Rails に依存する gem はすべて bundler 経由でインストールして、ローカルに保存する。グローバルの Ruby 環境は極力汚さない。
Ruby 2.6.1 のデフォルトの gem はこんなかんじ。
$ rbenv exec gem list
bigdecimal (default: 1.4.1)
bundler (default: 1.17.2)
cmath (default: 1.0.0)
csv (default: 3.0.4)
date (default: 2.0.0)
dbm (default: 1.0.0)
did_you_mean (1.3.0)
e2mmap (default: 0.1.0)
etc (default: 1.0.1)
fcntl (default: 1.0.0)
fiddle (default: 1.0.0)
fileutils (default: 1.1.0)
forwardable (default: 1.2.0)
io-console (default: 0.4.7)
ipaddr (default: 1.2.2)
irb (default: 1.0.0)
json (default: 2.1.0)
logger (default: 1.3.0)
matrix (default: 0.1.0)
minitest (5.11.3)
mutex_m (default: 0.1.0)
net-telnet (0.2.0)
openssl (default: 2.1.2)
ostruct (default: 0.1.0)
power_assert (1.1.3)
prime (default: 0.1.0)
psych (default: 3.1.0)
rake (12.3.2)
rdoc (default: 6.1.0)
rexml (default: 3.1.9)
rss (default: 0.2.7)
scanf (default: 1.0.0)
sdbm (default: 1.0.0)
shell (default: 0.7)
stringio (default: 0.0.2)
strscan (default: 1.0.0)
sync (default: 0.5.0)
test-unit (3.2.9)
thwait (default: 0.1.0)
tracer (default: 0.1.0)
webrick (default: 1.4.2)
xmlrpc (0.3.0)
zlib (default: 1.0.0)
パッケージマネージャの bundler はグローバルにインストールする
$ rbenv exec gem install bundler
$ rbenv rehash
Rails をローカルインストール
$ mkdir create-rails-project
$ cd create-rails-project
Gemfile を作る
$ cat << EOS > Gemfile
source "http://rubygems.org"
gem "rails", "5.2.2"
EOS
Rails を vender/bundle
にインストールする
$ bundle install --path vendor/bundle
これで『ガワ』を作ったことになるので、このディレクトリ内で Rails プロジェクトを作る。
$ bundle exec rails new my-app --skip-bundle
--skip-bundle
を必ず忘れないように。これを忘れると、グローバルの Ruby 環境に依存 gem がインストールされてしまう。
また、bundle exec rails new my-app -BCMT --skip-coffee -d sqlite3
とすると、 skip-bundle
, skip-action-cable
, skip-action-mailer
, skip-test
と CoffeeScriptのインストールがキャンセルされるので便利。-dは使用するデータベース種別を指定する。
こういう構成になった。
.
├── Gemfile
├── Gemfile.lock
├── my-app
└── vendor
my-app
が実際に開発する Rails 環境になる。
$ mv my-app ../
$ cd ..
$ cd my-app
gem をローカルにインストールする。
$ bundle install --path vendor/bundle
vendor/bundle
を git の管理外にする。
$ echo '/vendor/bundle' >> .gitignore
bundle lockコマンドの実行
$ bundle lock --add-platform x64-mingw32 x86-mingw32
このコマンドを実行しておくと、bundle install時の The dependency tzinfo-data (>= 0) will...
のワーニングが表示されなくなる。
起動してみる。
$ bundle exec rails s
成功。