日本語訳版(v4.2)で学習。
ただバージョンアップに対応出来ていないので細かな部分は英語版ですすめた。その際にバージョンまわりの障害に当たったので誰かのたすけになればとメモを残しておきます。
環境構築
Cloud9のワークスペース作成
ここは特に問題なくGUIでサクサク作成できる
- アプリ名:rails_tutorial
- 公開設定:private
- テンプレート: rails tutorial
RailsとパッケージマネージャBundlerの設定
ここで日本版と原版でバージョンが異なる。
おそらくここの差でのちのデプロイ時に引っかかるので英語版ですすめる
$ gem install rails -v 5.1.2 #ここが日本版より新しい
# 日本版ではRuby自体やBundlerなども入れているがそこはスキップ
$ cd # Change to the home directory.
$ mkdir workspace # Make a workspace directory.
$ cd workspace/ # Change into the workspace directory.
アプリの作成
$ cd ~/workspace
$ rails _5.1.2_ new hello_app
バージョン指定しているのでここも英語版にあわせる
Gemfileの編集
ここも英語版のバージョンにあわせる
source 'https://rubygems.org'
gem 'rails', '5.1.2'
gem 'sqlite3', '1.3.13'
gem 'puma', '3.9.1'
gem 'sass-rails', '5.0.6'
gem 'uglifier', '3.2.0'
gem 'coffee-rails', '4.2.2'
gem 'jquery-rails', '4.3.1'
gem 'turbolinks', '5.0.1'
gem 'jbuilder', '2.7.0'
group :development, :test do
gem 'byebug', '9.0.6', platform: :mri
end
group :development do
gem 'web-console', '3.5.1'
gem 'listen', '3.0.8'
gem 'spring', '2.0.2'
gem 'spring-watcher-listen', '2.0.1'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
Gemfileができたらbundlerにおぜん立てをお願いする。
updateはたぶん必要になる。updateするとinstall必要ないようだけど一応やる。
$ cd hello_app/
# 英語版にはないがupdateが必要な旨の警告がでた
$ bundle update
$ bundle install
確認
$ cd ~/workspace/hello_app/
$ rails server -b $IP -p $PORT
をやってプレビューボタンからraw previewしてあげるとRailsインストール済み画面がでる。やったぜ。
Hello, World!アプリの作成
このあたりは日本版でも何の問題もなさそう。
Git Bucket連携
ここでひっかかったのはSSH鍵の登録をおこなうところ。
アプリごとにも設定が可能だが、そっちに登録してしまうとReadOnlyなためpushすることができない。個人アカウントのページから登録する
↓2017/11現在こんな画面のほう。
Herokuデプロイ
どちらのチュートリアルもすらっといくけど日本版ですすめていた時には以下のような障害が立ちふさがった。
Herokuへのpushに失敗する
$:~/workspace/hello_app (master) $ git push heroku master:master
remote: ! No default language could be detected for this app.
remote: HINT: This occurs when Heroku cannot detect the buildpack to use for this application automatically.
remote: See https://devcenter.heroku.com/articles/buildpacks
remote:
remote: ! Push failed
remote: Verifying deploy...
なるほどbuildpack:setが必要なのか。そしてerrorにでているurlによるとbuildpacks:setとやらでsetするらしい。
$:~/workspace/hello_app (master) $ heroku buildpacks:set heroku/ruby
Buildpack set. Next release on limitless-sea-25260 will use heroku/ruby.
Run git push heroku master to create a new release using this buildpack.
互換性がない...?
なにかちがうバージョンなのかと調べてみたところ
https://teratail.com/questions/14604
に似たようなことが書いてあったので違うbuildpacksにしてみる。
$ heroku buildpacks:set https://github.com/heroku/heroku-buildpack-ruby
自分の場合はこれでもだめ。。。
ちなみに自分の場合はあきらめて英語版にしたがって最初からすすめ直したところ問題なくデプロイできるようになった。その時点での日本版との差異としては
- railsのバージョンが異なる
- railsのバージョンが異なることでGemfileも異なる
- 日本版ではRuby自体やbundlerのバージョンをマニュアルで指定している
bundlepacksは本来ならheroku createの時点で作ってくれるようなので、herokuコマンドのバージョンを変えうるあたりが怪しいが、このあたりは調べても情報が陳腐化しそうなのでスルーして先に進む
参考
Rails Tutorial: https://www.railstutorial.org/book/beginning
Rails Tutorial日本語訳版:https://railstutorial.jp/chapters/beginning