我有这个小耙任务:
namespace :db do
namespace :test do
task :reset do
ENV['RAILS_ENV'] = "test"
Rake::Task['db:drop'].invoke
Rake::Task['db:create'].invoke
Rake::Task['db:migrate'].invoke
end
end
end
Run Code Online (Sandbox Code Playgroud)
现在,当我执行时,它将忽略我试图硬编码的RAILS_ENV.如何使此任务按预期工作
我有这个简单的rake任务拒绝运行.我只是不明白为什么它看起来正确.谁可以指出我可能非常简单的错误?谢谢!
/lib/tasks/reindex.rb:
namespace :db do
desc "Tire reindex profiles"
task :reindex => :environment do
system "cd #{Rails.root} && rake environment tire:import CLASS='Profile' FORCE=true"
end
end
Run Code Online (Sandbox Code Playgroud)
错误:
rake db:reindex
rake aborted!
Don't know how to build task 'db:reindex'
Run Code Online (Sandbox Code Playgroud) 当我这样做bundle exec rake -T(或bundle exec rake)时,我会收到弃用警告:
Andrews-Air:nabu agrimm$ bundle exec rake --trace -T
[DEPRECATION] `last_comment` is deprecated. Please use `last_description` instead.
[DEPRECATION] `last_comment` is deprecated. Please use `last_description` instead.
[DEPRECATION] `last_comment` is deprecated. Please use `last_description` instead.
[DEPRECATION] `last_comment` is deprecated. Please use `last_description` instead.
[DEPRECATION] `last_comment` is deprecated. Please use `last_description` instead.
[DEPRECATION] `last_comment` is deprecated. Please use `last_description` instead.
[DEPRECATION] `last_comment` is deprecated. Please use `last_description` instead.
[DEPRECATION] `last_comment` is deprecated. Please use `last_description` …Run Code Online (Sandbox Code Playgroud) 可能重复:
如何清空heroku中的数据库
我在Heroku上有一个Postgres数据库.它是免费测试版之一.在本地,在测试时,我经常运行rake db:drop && rake db:create && rake db:migrate作为重置数据库的方法.
但是,当我尝试在Heroku上运行它时,我收到错误:
Couldn't drop mydatabaseid : #<PG::Error: FATAL: permission denied for database "postgres"
DETAIL: User does not have CONNECT privilege.
Run Code Online (Sandbox Code Playgroud)
呃,好的,我怎么能完全重置我的数据库,迁移和一切?
我知道您可以通过键入来查看所有可能的rake任务
rake -T
Run Code Online (Sandbox Code Playgroud)
但我需要知道一项任务到底是做什么的.从输出中,我如何找到实际具有任务的源文件?例如,我正在尝试查找db:schema:dump任务的源代码.
这是设置:
新的Rails应用程序,然后将此test_rake.rake放在lib/tasks中:
task :testclass do
HelloClass.hello
end`
Run Code Online (Sandbox Code Playgroud)
把hello_class.rb放在app/models中,或者放在lib /中用这行:config.autoload_paths += %W(#{config.root}/lib)添加到config.rb
class HelloClass
def self.hello
puts 'hello_class'
end
end
Run Code Online (Sandbox Code Playgroud)
rake testclass给出了这个错误:
/Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:2503:in `const_missing'
/Users/name/Sites/Rails/indexapp/lib/tasks/test_class.rake:5:in `block (2 levels) in <top (required)>'
/Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:636:in `call'
/Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:636:in `block in execute'
/Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:631:in `each'
/Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:631:in `execute'
/Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:597:in `block in invoke_with_call_chain'
/Users/name/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize'
/Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain'
/Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:583:in `invoke'
/Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task'
/Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:2029:in `block (2 levels) in top_level'
/Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:2029:in `each'
/Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:2029:in `block in top_level'
/Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level'
/Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:2001:in `block in run'
/Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/lib/rake.rb:1998:in `run'
/Users/name/.rvm/gems/ruby-1.9.2-p0@global/gems/rake-0.8.7/bin/rake:31:in `<top …Run Code Online (Sandbox Code Playgroud) 当我写debugger它不开始:
NoMethodError: undefined method `run_init_script' for Debugger:Module
from /usr/local/lib/ruby/gems/1.8/gems/ruby-debug-base-0.10.3/lib/ruby-debug-base.rb:239:in `debugger'
from (irb):4
Run Code Online (Sandbox Code Playgroud)
如果我跑rake my:task --debugger,它会立即将我返回到控制台.如何调试rake任务?
我想运行一个Rake任务,要求用户输入.
我知道我可以在命令行上提供输入,但是我想询问用户是否确定他们想要继续执行特定操作,以防他们错误输入提供给Rake任务的其中一个值.
我似乎无法找到允许我跳过迁移的选项或任何内容.
我知道你在想什么:"你永远不应该那样做......"
我需要跳过一个迁移,它对我的开发数据库中不存在的特定用户记录进行更改.我不想更改迁移,因为它不是我应该使用的源代码的一部分.有没有办法跳过迁移或跳过失败的迁移?
提前致谢!
rake ×10
ruby ×5
debugging ×2
database ×1
helper ×1
heroku ×1
postgresql ×1
rake-task ×1
ruby-debug ×1