隙を見て issue の盛り込みをしたりなど

issue 向けの branch を作成して

$ git checkout -b Issue#12

とりあえず admin な attribute の盛り込みは以下を参考にしつつ。

ええと、以下をナニしてとりあえず commit 作ります。

$ bundle exec rake db:migrate
$ bundle exec rake db:test:prepare
$ git commit -am 'Add admin columnt to users table'

で、別な issue 向けの branch 作成。

$ git checkout master
$ git checkout -b Issue#11

しばらく二つの branch を並行で云々しながら進める方向。項目てきに

  • Users なテーブルの CRUD な機能 (admin のみ操作可能) (Issue#12)
  • Provider な model の作成 (Issue#11)
  • Provider な CRUD 操作 (admin のみ操作可能) (Issue#11)
  • Connection な CRUD への Provider の盛り込み (Issue#11)

みたいなカンジになるのかどうか。

つうか

やっぱ admin 権限ないと駄目な controller が出てくる訳で filter 作らなきゃ、なのかな。authenticate_admin! みたいのがあるんかな。なんか無さげなカンジもしてますが。Admin モデルが云々とかあるし。
あ、以下なカンジで良いのか。

  before_filter :hoge
  def hoge
    unless current_user.admin?
      redirect_to :controller => 'conns', :action => 'index'
    end
  end

成程。つうか Ruby の unless 良いですね。まださっと出てこないけど。

そういえば

admin なソレについては commit を push して merge しといた方が良いのか。やっとこ。
Github に branch を push して PR 作って merge だん。で以下か。

$ git checkout master
$ git fetch origin
$ git merge origin/master
$ git checkout Issue#11
$ git merge master

これ、migrate はしなくて良いのですね。.gitignore に以下な行あり。

/db/*.sqlite3

次は Provider な scaffold 作って云々な方向ですが、タイムアップ気味。続きは追記で。

続き

ええと、scaffold しまーす。こうかな。

$ rails g scaffold Provider name:string

あら、デフォで rspec とかって記述もあるけどどうなんだろ。ええと rails g の出力は流れてよく分からんかったので git status なナニを以下に。

# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   config/routes.rb
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       app/assets/javascripts/providers.js.coffee
#       app/assets/stylesheets/providers.css.scss
#       app/controllers/providers_controller.rb
#       app/helpers/providers_helper.rb
#       app/models/provider.rb
#       app/views/providers/
#       db/migrate/20130926113936_create_providers.rb
#       spec/controllers/providers_controller_spec.rb
#       spec/factories/providers.rb
#       spec/helpers/providers_helper_spec.rb
#       spec/models/provider_spec.rb
#       spec/requests/providers_spec.rb
#       spec/routing/providers_routing_spec.rb
#       spec/views/

spec が追加されてます。今から何しなきゃなのか、というと

  • Provider は has_many conns で Conn は belongs_to Provider なのかな
  • controller に before_filter をナニ
  • filter は app/helpers/application_helper.rb で定義、で良いのかどうか

最低限、これらは試験を作っておきたいんですが。
とりあえず関連については以下なマッチャがあるのかどうか。

  describe Post do
      it { should belong_to(:user) }
      it { should have_many(:comments) }

試しに盛り込んでみたが belong_to とか知らん、と言われる。どうも shoulda-matchers というナニを云々らしい。

以下を Gemfile に追加して

group :test do
  gem 'capybara', '1.1.2'
  gem 'shoulda-matchers'
end

bundle install してリトライ。通ってる模様。今作ったソレはとりあえず以下で。

describe Provider do
  it { should have_many(:conn) }
end

あ、migrate してなかったや。

  1) Provider 
     Failure/Error: it { should have_many(:conn) }
     ActiveRecord::StatementInvalid:
       Could not find table 'providers'

ええと

$ bundle exec rake db:migrate
$ bundle exec rake db:test:prepare
$ bundle exec rspec spec/models

したのですが、試験にはパスしません。実装してないので。

  1) Provider 
     Failure/Error: it { should have_many(:conn) }
       Expected Provider to have a has_many association called conn (no association called conn)

なので、実装を盛り込んでみます。

と言いつつ

色々ハマッてます。途中に銭の勘定なナニの割込みが入ったりとかワケワカ状態。
なんとかしつつ以下なエラーが意味不明。

DEPRECATION WARNING: You're trying to create an attribute `provider_id'. Writing arbitrary attributes on a model is deprecated. Please just use `attr_writer` etc. (called from block (2 levels) in at (ry

そろそろ駄目。