github で gem をリリースしたばかりで、aruba gem との統合テストを作成しました。ただし、コマンドラインとは動作が異なるため、機能を実行できません。
機能を実行すると、レールがジェネレーターを見つけることができません。コマンドラインで同じ手順を繰り返すと、問題なく実行されます。
これは失敗した機能です
Background: A new rails application has been created with my gem
Given a rails application named "my_app" exists
And this gem is installed in that application
@announce
Scenario: Installation using default values
When I successfully run `rails generate google_authentication:install`
# this is needed because rails g returns 0 when can't find the generator
And the output should not contain "Could not find generator"
そして、これはバックグラウンドステップを実装するコードです
Given /^a rails application named "([^\"]*)" exists$/ do |app_name|
@app_name = app_name
Given "I successfully run `rm -rf #{app_name}`" # added to ensure that the working directory is clean
And "a directory named \"#{app_name}\" should not exist"
And "I successfully run `rails new #{app_name}`"
And "I cd to \"#{app_name}\""
end
When /^this gem is installed in that application$/ do
gempath = File.expand_path('../../../', __FILE__)
Given "I append to \"Gemfile\" with \"gem 'gem-name', :path => '#{gempath}'\""
And "I successfully run `bundle check`"
end
デバッグしようとしましたが、bundle check
コマンドを変更しbundle install
て出力をキャプチャすると、gem がバンドルにリストされていないことがわかりました。結果として、rails g --help
ステップを書くと、私のジェネレーターはそこにありません。ただし、devise gem とジェネレーターは存在します (devise は私の gem の要件としてリストされています。そのため、バンドラー/レールが aruba ステップ内のすべてをロードしていないようです。
これは Aruba または Bundler のバグだと思います。aruba の問題をオープンしましたが、まだ回答がありません。
完全なコードはGithubにあります
私がすでに見た最後のことは、この解決策を試してみましたが、うまくいきませんでした