作ろうとした開発環境
- Win10 64bit
- Ruby 2.4
- Rails 5.1
- Mysql 5.7
結果
Rubyだけバージョン下げた。
- Win10 64bit
- Ruby 2.3
- Rails 5.1
- Mysql 5.7
経緯
業務でRailsのプロジェクトにアサインされたはいいけどテスト環境がまだない(Amazon Linux想定)ので
とりあえずローカルで作っちゃおうってなった
ちなみにWinマシンでRails環境構築は初めて
Rubyのインストール
RubyInstallerを使う。
通常ならそのままいけるが社内プロキシにひっかかってこのままじゃできなかった。
なので先にMSYS2をインストールする
- インストーラDL先:MSYS2
RubyInstallerはMSYS2のwgetやらを利用してるみたい。
プロキシつかわないならRubyInstallerのみでOK
MSYS2のインストール後、プロキシ設定は以下
MSYS2プロキシ設定
- proxy環境変数読み込みシェルの作成
ユーザーやパスワードはURLエンコする
export http_proxy=http://{user}:{password}@{ip:*.*.*.*}:{port}/
export https_proxy=http://{user}:{password}@{ip:*.*.*.*}:{port}/
export ftp_proxy=http://{user}:{password}@{ip:*.*.*.*}:{port}/
export HTRP_PROXY=http://{user}:{password}@{ip:*.*.*.*}:{port}/
export HTTPS_PROXY=http://{user}:{password}@{ip:*.*.*.*}:{port}/
export FTP_PROXY=http://{user}:{password}@{ip:*.*.*.*}:{port}/
- wgetのプロキシ設定
/msys2/etc/wgetcの80~90行目をコメントアウト外して編集
# You can set the default proxies for Wget to use for http, https, and ftp.
# They will override the value in the environment.
https_proxy = http://{user}:{password}@{ip:*.*.*.*}:{port}/
http_proxy = http://{user}:{password}@{ip:*.*.*.*}:{port}/
ftp_proxy = http://{user}:{password}@{ip:*.*.*.*}:{port}/
# If you do not want to use proxy at all, set this to off.
use_proxy = on
- pacmanのcurlとwgetコマンドを開放
18~19行目をコメントアウト外す
XferCommand = /usr/bin/curl -C - -f %u > %o
XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
RubyInstallerの操作
とりあえずそのままNext押してればOK
Rubyのインストールが終わればプロンプトの画面に移る。
プロキシ設定しない場合はこの画面で1->2->3の順でOK
MSYS2を先にインストールしてる場合は2->3の順で実行
DevKitインストール
RubyInstallerからDevKitをDLして適当なとこに展開(私はRuby2.4の下にdevKitって作った)
以下コマンドを実施
$cd Ruby24-x64\devkit
$devkitvars.bat
$ruby dk.rb init
$ruby dk.rb install
おめでとうRubyはインストールできた。あぁ次はRailsだ……
ここまで1時間くらいかかった。
ここからがめっちゃハマった……
とりあえずgemの更新と必要なライブラリのインストール
以下コマンド実施
SQLITEはいるかわからんがとりあえず
# proxy環境は末尾に「-p http://{user}:{password}@{ip:*.*.*.*}:{port}/」をつける
$gem update --system
$gem install sqlite3
$gem install nokogiri
$gem install bundler
ついにrailsのインストール
$gem install bundler
$gem install rails
$rails -v
Rails 5.1.4
Railsインストール完!!だがここからが地獄だ……
とりあえずRailsコマンド叩いてみる
$bundle exec rails new sample -d mysql
次にdatabase.ymlを編集する
{} で囲んでいるを編集、ついでにMysqlのユーザーを作っておく
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: {rootpassword}
host: localhost
development:
<<: *default
username:{developmentuser}
password:{developmentpass}
database: sample_development
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
username: {developmentuser}
password: {testpass}
database: sample_test
production:
<<: *default
database: sample_production
username: {productionuser}
password: <%= ENV['SAMPLE_DATABASE_PASSWORD'] %>
じゃあDBをつくろうとしたらMysql2のエラーでだめだった……
mysql2の読み込みでエラーになってるからgemのディレクトリ
/Ruby23-x64/lib/ruby/gems/2.4.0/gems/mysql2-0.4.9-x64-mingw32/lib/mysql2をみにいったら……
参照してるのはlib/mysql2/2.4/~なのに2.4のディレクトリがない・・・
つまりmysql2がRuby2.4にまだ対応してないってオチでした
なのでRuby2.3に落としてすべて最初からやり直し...
Linuxならrbenvでバージョンかえればいいだけなのに……
やっぱRailsはWinでやるもんじゃないわ……
とりあえずRuby2.3に落として今のところ開発してますが、他のライブラリでも同様なことが起きそうで怖い。
しかも想定してる環境と違いが出るのが一番まずいかも……