[Day3 Rails Tutorial]第三章完|herokuにデプロイできない問題にうまく対処![3.1.〜3.5]

Rails Tutorial day1 感想 まとめ 振り返り エラー解決 演習問題 回答

Day3です!

今日もがんばっていきましょー!

読んでいただいている方、いつもありがとうございます!

初心者なもので、たまに間違った内容もあるかと思います。

その際にはコメントやTwitterでご指摘いただけると幸いです!

 

[Day3]第三章3.1〜3.5作業ログ

sample_appの作成

minitestというgemをインストールするときに、エラーが発生。

You have requested:
  minitest = 5.10.3

The bundle currently has minitest locked at 5.11.3.
Try running `bundle update minitest`

指示通りに、bundle update minitestを叩けばクリア。

いつも通り、Bitbucketにもpush。

git remote add origin git@bitbucket.org:s-take/sample_app_railstutorial.git

git push -u origin master(masterはローカルレポジトリ)

ブランチが違うときは、git push -u origin -all

 

herokuにデプロイ

RailsのデフォルトのページはHeroku上ではうまく表示されない仕様になっています。

らしい。知らなかった。

git push

git commit -am "Add hello"

heroku create

git push heroku master

 

はじめてのテスト

controllerを作ったら、自動的にtestファイルも作られている。

このtestファイルを除いて簡単なテストを体験。

static_pages_controller_test.rb
test "should get home" do
  get static_pages_home_url
  assert_response :success
end

ここを日本語にしてみると、「homeアクションに対して、getリクエストを送る。responseが200 OKと成功になるはず。」

 

herokuにデプロイできない?

チュートリアルが進んで、コードも変えてきたので、heorkuにpushしようとしたけど、できない問題発生。

はじめは下のコマンドを実行。

git push heroku master(ローカルレポジトリのmasterブランチをpushするよ)

すると、

Everything up-to-date

どうしたものかと思ったけど、解決。

これはローカルレポジトリのmasterブランチをpushするコマンド。

今はトピックブランチでずっと作業していたので、変更がなくて当たり前。

次は、ためしに下のコマンドを実行した。

git push heroku

うまくpushされるかと思ったけど、されなかった。

remote: Pushed to non-master branch, skipping build.

文字通り、masterブランチにプッシュしないとデプロイされないことが原因でした。

アプリケーションとして認識されるのは master ブランチにあるソースコードだけです。

参考:君の瞳はまるでルビー – Ruby 関連まとめサイト

解決策も乗っていました。

master 以外のブランチにあるソースコードを既存の Heroku アプリケーションとしてデプロイするには git push に –force オプションを使う必要があります。

例えば beta_1 というブランチのソースコードをアプリケーションとしてデプロイするには以下のコマンドを実行してください。

git push heroku beta_1:master –force

これはローカルリポジトリのブランチ beta_1 の内容を heroku リモートリポジトリの master に強制的に入れるためのものです。

だからぼくの場合は、static-pagesというトピックレポジトリにいたので、以下のコードを打てば強制的にherokuにできたんですね。

git push heroku static-pages:master --force

まとめると、こんな感じでしょうか。

herokuにはmasterブランチしか存在できない。

 

実験的にトピックレポジトリの作業内容を試したい場合は、上記のコマンドを使ってherokuのmasterブランチにデプロイできる。

 

仕様が固まれば、ローカルレポジトリでマージしてから、再度herokuにデプロイすれOK。

超勉強になった!

※3.6節は飛ばしました。

 

メモ

まとめてコミットできる

git commit -a -m "Commit Message" =git commit -am "Commit Message"

すべてを変更オプション(-a)とコミットメッセージを追加するオプション(-m)は一度(-am)でかける。

 

gitコマンドおさらい

git init(初期化。最初だけ実行。.gitファイルが作られる。)

git add -A(いきなりコミットされず、はじめはステージング (Staging) という待機用リポジトリに置かれ、コミットを待つ状態に。)

git status(状態の確認)

git commit -m "Commit Message"(ローカルレポジトリにコミット。メッセージは現在形かつ命令形で書くのが普通)

git push -u origin master(リモートレポジトリへpush)

 

Railsコマンドで間違えたときの直し方

rails generate controller StaticPages homeは下のコマンドで消せる。

rails destroy controller StaticPages home

rails generate model User name:string email:stringは下のコマンドで消せる。

rails destroy model User

 

マイグレーションの変更をもとに戻す方法

RailsのDBはバージョンアップされる感じで更新される。

前のバージョンに戻るようにすれば変更が取り消せる。

rails db:migrateマイグレーションを変更する

rails db:rollback一つ前の状態に戻る

rails db:migrate VERSION=0はじめの状態に戻る

 

タケシなりの演習の回答

Fooというコントローラを生成し、その中にbarとbazアクションを追加してみてください。
コラム 3.1で紹介したテクニックを駆使して、Fooコントローラとそれに関連するアクションを削除してみてください。

rails generate controller Foo bar baz

rails destroy controller Foo bar baz

を実行すればOK。

サンプルアプリケーションにContact (問い合わせ先) ページを作成してください。

まずはテストケースの作成。

チュートリアルと同じように、エラーを解決していくように勧めていく。

結局は、アクション、ルーティング、viewファイルの作成で完了。

リスト 3.41にrootルーティングを追加したことで、root_urlというRailsヘルパーが使えるようになりました。リスト 3.42のFILL_INと記された部分を置き換えて、rootルーティングのテストを書いてみてください。

static_pages_controller_test.rb
test "should get root" do
get root_url
assert_response :success
assert_select "title", "Home | #{@base_title}"
end

 

[Day3]まとめ

  • 学習範囲:3.1〜3.5
  • 学習時間:3時間
  • 総学習時間:14時間50分
  • 反省点:今日はわりとスムーズにすすんだ!あと不明な点についてちゃんと調べることができた。特にherokuあたりはGOOD!
  • 備考:3.6は飛ばした。

読んでいただいている方、いつもありがとうございます!

初心者なもので、たまに間違った内容もあるかと思います。

その際にはコメントやTwitterでご指摘いただけると幸いです!

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です