在使用ruby on rails时,通常使用诸如rake db:migrate或rails g devise:install之类的终端命令。但是这些命令中的:到底是什么意思呢?在rake db:migrate中,migrate是一个参数还是别的什么?这似乎不是一个很难的问题,但在谷歌上研究了几个小时后,我仍然没有找到答案,我真的希望有人能给我解释一下。
给定同时引用名称空间模型和非命名空间模型的rake任务:
namespace :thing do
task :thingo => :environment do
Klass.first.some_method
Namespaced::Klass.first.some_other_method
end
end
使用ruby 1.9.2、rails 3.0.9和rake 0.9.2,将产生一个异常,如下所示:
undefined method 'some_other_method' for #<Klass:0x007fcfafbaa6e0>
我一直在使用ruby on rails,没有问题,现在突然每次我运行rake db:create时都会得到以下错误:
C:\>cd xampp
C:\xampp>cd htdocs
C:\xampp\htdocs>cd what
C:\xampp\htdocs\what>rake db:create
rake aborted!
undefined method `task' for #<What::Application:0x20eb1e0>
(See full trace by running task with --trace)
C:\
所以我遇到了一个非常奇怪的rails问题(6.1.4)。在正常操作中,一切都运行良好,但是当我尝试在rake任务内部使用某些模型时(例如,seeds.rb中的代码),我得到以下错误:TypeError: superclass mismatch for class Comment
在做了大量的调查之后,我把罪魁祸首缩小到了这样一个事实:在我的模型类中,我引用了另一个类的名称。具体来说,下面的代码足以造成问题
class Question < ApplicationRecord
include JsonHelpers
include PostableHelpers
puts &
我有以下Rake任务:
namespace :foreman do
task :dev do
`foreman start -f Procfile.dev`
end
end
desc "Run Foreman using Procfile.dev"
task :foreman => 'foreman:dev'
forman命令在shell中运行良好,但是当我运行rake foreman时,会得到以下错误:
/Users/me/.gem/ruby/2.0.0/gems/bundler-1.5.2/lib/bundler/rubygems_i
我正在升级rails 4应用程序,当我运行rails app:update时,我会看到错误消息Don't know how to build task 'app:update'
Don't know how to build task 'app:update'
/Users/akshar/.rbenv/versions/2.6.10/lib/ruby/gems/2.6.0/gems/rake-10.1.1/lib/rake/task_manager.rb:49:in `[]'
/Users/akshar/.rbenv/versions/2
我建立了一个宝石一段时间前,没有包括任何测试(可耻的我)。此后,我试图通过包含最小的内容来纠正这一问题,但我被困在大门外,有以下错误:
不知道如何构建任务“默认”
这是我的Rakefile
require 'rake/testtask'
Rake::TestTask.new do |t|
t.test_files = FileList['test/*_test.rb']
end
和test/unit_test.rb中的虚拟文件
require 'minitest/autorun'
class TestPackage < Mi
我已经创建了一个名为update_zendesk_rake.rb文件的Rake,但是每次我尝试使用以下命令运行它
rake zendesk:update_zendesk_rake
我收到错误:
rake aborted!
Don't know how to build task 'zendesk:update_zendesk_rake' (See the list of available tasks with `rake --tasks`)
/Users/conorquarry/.rvm/gems/ruby-2.5.1/gems/rake-13.0.3/li
我刚刚切换到使用Capistrano 3,并在前后钩子文档中遇到了一些问题。
在文档中,它显示了以下调用现有任务的方法
before :starting, :ensure_user
after :finishing, :notify
如果我使用这个语法,我就会得到‘不知道如何开始构建任务’,而是必须执行以下操作才能使我的任务正常工作。
before "deploy:starting", "dj:stop"
after "deploy:finished", "dj:start"
dj任务位于*.rake文件中的Capistrano任
如果lib/任务如下所示,则使用Rails 2.3.10
lib/tasks
- a.rake
- b.rake
a.rake看起来是这样的:
namespace :a do
desc "Task A"
task(:a=>:environment)do
msg('I AM TASK A')
end
def msg(msg)
puts "MSG SENT FROM Task A: #{msg}"
end
end
b.rake看起来像这样
namespace :b do
我是Ruby编程和Rakefile编程的新手。我已经写了一段代码,但答案并不像预期的那样
require './database'
desc "Show number of registered users"
task :report_registered_users do
arr=Database.new.registered_users
printf("Month | No. Of Users\n")
printf("----------+----------------\n")
arr.
我正在试着为Redmine写一个导入rakefile。它使用ruby on rails。我不是rails开发人员,但我们确实喜欢使用redmine进行项目和问题管理。
require 'rubygmes'
require 'fastercsv'
# csv issues import for redmine
# Will convert a csv into a issues bulkloader into redmine
# Column names
# row[0]=Nb Number,row[1]=Product,row[2]=Element,row[3
我已经编写了一个Ruby脚本,我想将它作为Rake任务运行。以下是我的data.rake文件:
namespace :data do
namespace :fixtures do
desc "Save fixtures to JSON file"
task :file do
bundle exec ruby "#{Rails.root}/lib/tasks/get_fixtures.rb"
end
desc "Save fixtures to DB"
task db: :environme
我正在编写一个rake任务,以更新表中特定列中的值。当我运行任务时,我会得到以下错误:
uninitialized constant FirstLookSubscription
以下是rake任务代码:
namespace :first_look_db do
desc "Adds one month to the Look Subscription"
FirstSubscription.where(subscription_state: 'active').each do |t|
t.update_attribute :next_bill
在我正在从事的一个项目中,我有许多使用rakes运行的解析器。当使用另一个rake中已经存在的方法名时,因为它们都使用相同的环境,所以我得到一个冲突。
有没有办法将rake文件的作用域限制在它们的名称空间内?我以为这就是命名空间的全部意义所在?
示例:
namespace :test do
task :test_task => :environment do
...
end
def test_method(argument)
...
end
end
namespace :other_test do
task :test_task =&g
当我去heroku run rake的时候,Rake被取消了,下一行说,Don't know how to build task 'default'
Ran heroku run rake --trace和got
Running `rake --trace` attached to terminal... up, run.3479
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in
我刚刚将ActionMailer配置为使用SendGrid,这样我就可以在设计电子邮件时使用它。电子邮件部分工作得很好,但现在我无法完成迁移。我得到的错误是'TypeError: Mail不是一个模块‘,并显示在下面的代码块中。
$ rake db:migrate
rake aborted!
TypeError: Mail is not a module
.../ruby-2.3.4/gems/mail-2.7.0/lib/mail.rb:3:in `<top (required)>'
.../ruby-2.3.4/gems/activesupport-5.0.6/
如何在ruby中从Rake任务返回一些值。
示例代码:
namespace tasks
task task1: :environment do |task|
log = "Running task"
puts log
log << "Done"
return log # suggest how to do this
end
end
我以如下方式运行rake任务:Rake::Task['tasks:task1'].invoke。如何获取变量中的返回值,如下所示:
resul