我对默认的Rails Rake任务的预期用途感到有些困惑,并且想知道我是应该使用db:reset还是编写自定义Rake任务.没有什么聪明的,只是每天的家务管理,我可能会错过一个明显的文档,因为我是Rails的新手.
我的问题:我想丢弃我的数据库并从一个完全干净的设置运行,以便我可以确定数据库只包含已知数据.这对于演示准备,调试以及确保Jenkins在测试中进行类似比较非常有用.
目前,我写的是这样的:
bin/rake db:drop:all db:create:all db:migrate db:seed db:test:prepare
Run Code Online (Sandbox Code Playgroud)
这需要输入很多,但只在dev和test数据库中保留种子数据.我不确定这有什么不同db:reset,哪种类型更方便.
我应该使用db:reset还是编写自定义db:from_scratch任务?
我需要一些有关在生产Ruby-on-Rails站点中配置邮件的建议。
我在EngineYard上部署了Rails应用程序。我有几个站点,例如- demo.mydomain.com或staging.mydomain.com-如何配置Devise,以便在部署时可以确保确认邮件来自demo.mydomain.com或staging.mydomain.com自动发送?即,我想要相同的GitHub代码库,并希望动态填充配置。
目前在config/environments/production.rb我行:
config.action_mailer.default_url_options = { :host => 'demo.mydomain.com' }
Run Code Online (Sandbox Code Playgroud)
但是,当将相同的代码部署到staging.mydomain.com它们都在其中运行时,这是不正确的RAILS_ENV=production
有任何想法吗?
谢谢戴夫
更新:现在,为了实际操作,我添加了特定的环境来对邮件域进行硬编码。所以,现在demo.mydomain.com运行在environments/demo.rb,和www.mydomain.com上运行environments/productions.rb。我不喜欢这个就是文件之间的重复,这不是很清楚,我怎么干起来,因为我有,例如,database.yml
我正在努力加快一个大的RSpec项目的测试.除了使用RSpec --profile选项之外,我还希望打印出运行时间最长的测试文件[1].
在我的spec_helper.rb转储被测试的类和文件的总时间,但是因为我们spec/model和spec/request目录我真的希望能够打印当前测试的文件名而不仅仅是类名(described_class),以便用户可以消除歧义在优化之间model/foo_spec.rb和之间request/foo_spec.rb.
在一个before块中spec/spec_helper.rb,如何获取当前测试文件的文件名?
我(严重修剪)spec_helper看起来像这样:
config.before :all do
@start_time = Time.now
end
config.after :all do |test|
timings.push({ :name => test.described_class,
:file => 'I do not know how to get this',
:duration_in_seconds => (Time.now - @start_time) })
end
config.after :suite do
timing_logfile_name = 'log/rspec_file_times.log'
timing_logfile = "#{File.dirname(__FILE__)}/../#{timing_logfile_name}"
file = File.open(timing_logfile, 'w')
timings.sort_by{ |timing| timing[:duration_in_seconds].to_f }.reverse!.each do |timing|
file.write( sprintf("%-25.25s % …Run Code Online (Sandbox Code Playgroud)