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ファイルを除いて簡単なテストを体験。
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 ブランチにあるソースコードだけです。
解決策も乗っていました。
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ルーティングのテストを書いてみてください。
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でご指摘いただけると幸いです!
コメントを残す