walktan’s blog

SIer勤務4年目。Web業界への転職計画遂行中。プログラミングなどの学習記録(備忘録)などを記していく。

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 を閉じる | 雪猫ノート

全体の流れは以下を参考にした。

qiita.com

 

以上

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画面までたどり着けた。

qiita.com

 

以上