最近、私は自分のアプリを構築するための最良、最速、最小のフレームワークを見つけるために、Ruby MVC に飛び込み始めました。Rails に満足できなかったので、Padrinoを試してみることにしました。また、完全なアプリのアウトサイドイン TDD を初めて試しているので、すべてのコンポーネントのテストを記述できることが重要です。残念ながら、私は Padrino でモデルを作成することから抜け出せないので、ベータ版ソフトウェアのせいなのか、それとも私のエラーなのか疑問に思っています。
テスト用に Cucumber と RSpec を使用し、ORM 用に Sequel を使用してプロジェクトを作成することから始めます。
$ padrino g project test -d sequel -t cucumber -c sass -b
次に、いくつかのモデルと移行を作成します。
$ padrino g model user
# ./db/migrate/001_create_users.rb
Sequel.migration do
change do
create_table :users do
primary_key :id
String :name
String :password
end
end
end
次はもちろんスペックです。例として、単純なものを示します。
# ./spec/models/user_spec.rb
require 'spec_helper'
describe User do
it 'can be created' do
user = User.create
end
end
次に、仕様を移行して実行します。
$ padrino rake sq:migrate:up
$ rspec spec
F
Failures:
1) User can be created
Failure/Error: user = User.create
Sequel::DatabaseError:
SQLite3::SQLException: no such table: users
# ./spec/models/user_spec.rb:5:in `block (2 levels) in <top (required)>'
Finished in 0.00169 seconds
1 example, 1 failure
Failed examples:
rspec ./spec/models/user_spec.rb:4 # User can be created
これは非常に紛らわしいです。この時点で、Padrino コンソールにアクセスすることがこの奇妙な問題の解決に役立つと考えました。私は間違っていた。
$ padrino c
> User.create
=> #<User @values={:id=>1, :name=>nil, :password=>nil}>
> User.all
=> [#<User @values={:id=>1, :name=>nil, :password=>nil}>]
十分な結果が得られますが、test
環境で試してみます。
$ padrino c -e test
> User.create
Sequel::DatabaseError: SQLite3::SQLException: no such table: users
RoR で統合モデルを実行するには、 のようなことをしなければならないことはわかっていますが、実行しても同等のものが明らかにrake db:test:prepare
ならpadrino rake -T
ないようです (Sequel、DataMapper、および ActiveRecord でテストされていますが、どれも を持っていないようですdb:test:prepare
)。私の質問は、どうすれば統合データベース テストを Padrino 内で実行できますか?