我只使用rake命令学习了Rails rake db:migrate; 但是,我读到我应该使用bundle exec rake ...而不仅仅是普通的rake.现在我对使用哪个感到困惑.
我应该使用bundle exec rake而不仅仅是简单的rake还是仅仅是偏好的东西?任何见解都将非常感谢!谢谢!
简单来说,Rake做什么?它有什么用途?我知道它是一个构建工具,但我看起来更详细一点.(对于一个傻瓜.)
我试图让Ruby调试器在我的一个规范中运行:
describe User do
it "should be valid" do
debugger
User.new.should be_valid
end
end
Run Code Online (Sandbox Code Playgroud)
当我运行rspec时,我得到:
debugger statement ignored, use -d or --debug option to enable debugging
Run Code Online (Sandbox Code Playgroud)
我尝试过以下方法:
rake spec --debug
rake spec --debug --trace
rake spec:models --debug
bundle exec rspec --debug
bundle exec rspec --debug spec/models/
bundle exec rspec --d spec/models/
bundle exec "rspec --debug" spec/models/
bundle exec rspec --debugger spec/models/
bundle exec --debugger rspec spec/models/
bundle --debugger exec rspec spec/models/
bundle --debugger exec rspec spec/models/
bundle exec --debugger rspec …Run Code Online (Sandbox Code Playgroud) 每当我尝试在rake任务中使用函数时,我都会收到错误.有没有办法让它发挥作用?
错误说,"没有这样的文件或目录 - (rake任务名称)"
内置rake任务工作正常,但我的新自定义任务在Project/lib/tasks/payments.rb中没有加载:
namespace :payments do
desc "Tally payments at the end of the month"
task :compute => :environment do
BillingPeriod.compute_new_period
end
end
$ rake payments:compute
(in /Users/rob/Code/Apps/skyfarm)
rake aborted!
Don't know how to build task 'payments:compute'
Run Code Online (Sandbox Code Playgroud)
如果我加载文件application.rb它工作正常:
require 'lib/tasks/payments.rb'
Run Code Online (Sandbox Code Playgroud)
......但它打破了其他事情:
$ rails s
./lib/tasks/payments.rb:1: undefined method `namespace' for main:Object (NoMethodError)
Run Code Online (Sandbox Code Playgroud) 为什么没有列出一些rake任务rake -T?喜欢db:migrate:reset?我可以毫无问题地执行它,但为什么不在那里列出?有没有办法获得一个真正的rake任务完整列表?
% rake -T (in /home/zeus/projects/my_project) rake about # List versions of all Rails frameworks and the environment rake db:create # Create the database from config/database.yml for the current Rails.env (use db:create:all to create all dbs in the config) rake db:drop # Drops the database for the current Rails.env (use db:drop:all to drop all databases) rake db:fixtures:load # Load fixtures into the current environment's database. rake db:migrate # Migrate the database (options: VERSION=x, VERBOSE=false). rake …
我有一个Rails 2.2项目,我想在其中覆盖rake db:test:prepare任务的功能.我认为这会起作用,但它没有:
#lib/tasks/db.rake
namespace :db do
namespace :test do
desc "Overridden version of rails' standard db:test:prepare task since the schema dump used in that can't handle DB enums"
task :prepare => [:environment] do
puts "doing db:structure:dump"
Rake::Task['db:structure:dump'].invoke
puts "doing db:test:clone_structure"
Rake::Task['db:test:clone_structure'].invoke
end
end
end
Run Code Online (Sandbox Code Playgroud)
我得到了标准任务的行为.如果我将任务的名称更改为:prepare2然后执行rake db:test:prepare2,那么它可以正常工作.我从中得出的自然结论是,我的rake任务在内置的Rails 之前被定义,因此我的标准:prepare任务会覆盖我的rake 任务.
任何人都可以看到我如何解决这个问题?我宁愿覆盖它而不是使用新任务.谢谢,最多
我想用虚拟数据填充新功能,但不想使用db/seeds.rb文件,因为它已经有种子,其他数据与此功能无关.
要运行默认seeds.rb文件,请运行该命令rake db:seed.
如果我在被db调用的目录中创建一个文件seeds_feature_x.rb,那么rake命令会运行(仅)该文件是什么样的?
我是铁杆新手.我注意到在rails 5中生成数据迁移时,有些人会使用rails db:migrate它rake db:migrate.有人可以解释数据库迁移中rails vs rake命令之间的区别吗?是否意味着rake命令在rails 5中已经过时了?
非常感谢