RspecでControllerをテストする際、flashに値を渡す方法
RspecでControllerをテストする際、flashに値を渡す方法のメモ
<背景>
以下のような、flashの値で分岐処理しているactionをテストしたい
def my_action if flash[:something].nil? @hoge = flash[:something] end end
<結論>
specにて、FlashHash
クラスを使って渡す
before do flash_hash = ActionDispatch::Flash::FlashHash.new flash_hash[:something] = "hoge" session['flash'] = flash_hash.to_session_value get :my_action end it "@hogeがnilでないこと" do expect(assigns(:hoge)).not_to be_nil end
ちなみに、↓これではmy_action
へ値が渡らなかった
before do flash[:something] = "hoge" get :my_action end
(参考)
stackoverflow.com
以上
Rails4 主キーのカラム名を id 以外に変更する方法
Railsでは、テーブルを生成すると自動的にid
という主キーが生成されるが、
これを<テーブル名>_id
という名称に変更する際のメモ
<背景>
Active Recordでjoins
した際に、複数テーブルにid
というカラム名が
存在すると、列別名をつける必要がでてくる。そこで、主キーをid
ではなく、
<テーブル名>_id
という名称に変更して、列別名をつける手間を省きたい
<結論>
こんなmigrationファイルを作成すればよい
(id
としての特性はそのままxxx_id
に引き継がれる)
class RenameColumnIdToXxxId < ActiveRecord::Migration def change rename_column :xxx, :id, :xxx_id end end
そもそもテーブルを生成する際に主キー名を<テーブル名>_id
にする場合は、
rails g model XXX
して生成されたmigrationファイルを以下のように修正する
(id: false
オプションで主キーの生成をさせず、代わりの主キーを設定する)
class CreateXxxs < ActiveRecord::Migration def change create_table :xxxs, id: false do |t| t.column :xxx_id, 'INTEGER PRIMARY KEY AUTO_INCREMENT' t.string :title t.timestamps end end end
以下を参考に四苦八苦したが、一度つくってしまったテーブルについてはrename_column
が簡単だった
blog.takanabe.tokyo
以上
GitHubを使ったIssue & Pull requestベースな開発
GitHubを使ったIssue & Pull requestベースな開発手順メモ。
Issue & Pull requestベースで開発していくと、証跡が残るし、
ToDoが管理ができてよい。
<開発の流れ>
*アンダーラインが引いていある箇所は適宜変更すること
①GitHubにてToDoの内容を[ New Issue ] する
②作業用ディレクトリを作成する
$ mkdir hitss_45
$ cd hitss_45
③GitHubからソースを落とす
$ git init
$ git remote add origin https://walktan@github.com/walktan/hitsstream.git (*1)
$ git pull origin master
④作業ブランチを派生する
$ git checkout -b issue-45
⑤実装
⑥GitHubへCommit & Pll Request
$ git branch //現在のブランチを確認
$ git add -A .
$ git commit -m "<作業概要> -Closes #45" (*2)
$ git push origin issue-45
⑦GitHub画面から、[New Pull request] & [Merge pull request]する
(*1) https://(ユーザ名)@github〜としないと、push時に403エラーが発生する場合がある
gitでpushしようとしたら403された話 - Qiita
(*2) コミットメッセージに'Closes #<issue番号>'を含めると、[Merge pull request]時に該当のissueが自動クローズさせる
Git のコミットメッセージから GitHub 上の Issue を閉じる | 雪猫ノート
全体の流れは以下を参考にした。
以上
VirtualBox+VagrantでRuby on Rails 4 のローカル開発環境構築
Ruby on Rails 4 でWebアプリケーションを開発するにあたり、
VirtualBox+Vagrant でローカル開発環境を構築した際のメモ。
VirtualBox ・・・
PC上にVMをたてるためのソフトウェア・パッケージ。
開発元はOracleだが、無料で使える。比較対象としては
VMware Playerがあるが、VirtualBoxの方が手軽であり、
なによりVagrantという超便利ツールとの親和性が高いらしい
Vagrant ・・・
仮想化ソフトのラッパーツール。
VMの構成をVagrantfileに記述してvagrant upコマンドを実行する
だけで、すぐに環境を整備できる。また、ChefのレシピとVagrantfileを
共有することで、同一のローカル開発環境を 手早く用意できるため、
チーム開発に便利
以下の記事のとおりコマンドを実行していくだけで、
RailsのWelcome画面までたどり着けた。
以上
ブログはじめます
生活をよりよくするため、ブログはじめます。
主にプログラミングなどの学習内容(備忘録)を記事にします。