This gem gives you Factory logging model.For more detail, About motivation, please see http://hackerslab.aktsk.jp/technology/factorygirl_log/.
Add this line to your application's Gemfile:
gem 'factory_logger'
And then execute:
$ bundle install
$ bundle exec rake factory_logger_engine:install:migrations
$ bundle exec rake db:migrate
First, you register notification subscriber.write,
ActiveSupport::Notifications.subscribe("factory_bot.run_factory") do |_name, start, finish, _id, payload|
execution_time_in_seconds = finish - start
traits = payload[:traits].map{|t| t.to_s}
factory = FactoryInspector.factory_inspect(payload[:factory]).merge(traits: traits)
FactoryLog.logging(factory, execution_time_in_seconds)
end
(I use factory_inspector to get factory's infos.This gem isn't dependent it, You can use or not.)
at config/initializers/notifications.rb
.
If you want to factory's execution infos, after rails c -etest
,
$ FactoryLog.ranking
$ Factory.all
$ Factory.find(2).traits
There are several class methods, please read app/models/factory_log.rb
.
##Note
If you use DatabaseCleaner
od DatabseRewinder
in your testing, plobably you need to setting for excepting to FactoryLog
model. For example, you wrote like,
config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)
DatabaseCleaner[:active_record, model: ActiveRecord::Base.using(:master)]
end
change like this,
config.before(:suite) do
REDIS.flushdb #this is Redis client for this engine.
DatabaseCleaner.strategy = :truncation
DatabaseCleaner.clean
DatabaseCleaner[:active_record, model: ActiveRecord::Base.using(:master)]
end
config.after(:each) do
DatabaseCleaner.strategy = :truncation, {:except => %w[factory_logs factories assos traits asso_relations trait_relations] }
DatabaseCleaner.clean
end
This gem use redis. You can configure setting configuration Like this,
FactoryLogger.configure do |config|
config.redis_host = "http://regis_host_url"
config.redis_port = 4649
end
Default setting is localhost
, and 6379
port. Sorry, now supporting tcp conecttion only (waiting for your contribute!).
- Fork it ( https://github.com/[my-github-username]/factory_logger/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request