【问题标题】:How to see rake task puts / logs inside rails server?如何在 Rails 服务器中查看 rake 任务放置/日志?
【发布时间】:2015-12-16 07:31:50
【问题描述】:

我有一个像这样的 rake 任务:

task :create_orders, [:my_param] => :environment do |t, args|
    puts "hello"
    Rails.logger.debug "hey"
end

当我从视图中的按钮调用 rake 任务时,rake 任务中的所有内容都会按照我的意愿运行。

但是,我看不到我在终端中的 putsRails.logger.debug 中放入了什么,我在终端中运行 rails server 命令来启动 localhost 服务器。

我也尝试在我的项目文件夹中运行 tail -f log/development.log,但我的 rake 任务中没有出现 putsRails.logger.debug 语句。

我应该怎么做才能看到我在rails server 终端中的putsRails.logger.debug 语句中放入的内容?

【问题讨论】:

  • 怎么叫rake任务?
  • 使用 AJAX。我的控制器内部路由的 AJAX url。我的控制器操作中有这个:%x(bundle exec rake create_orders)
  • 这就是答案。 %x 在子 shell 中运行命令。要共享应用程序资源,应使用 Rake::Task[...].invoke 调用 rake 任务。
  • 问题是,当我使用Rake::Task[...].invoke 时,我总是收到此错误NameError (uninitialized constant MyController::Rake),这导致我的rake 任务根本没有运行。
  • 只在动作内部还是在控制器的最顶端?

标签: ruby-on-rails ruby ruby-on-rails-4 rake rake-task


【解决方案1】:

我把它放在我的控制器的最上面:

require 'rake'
Rails.application.load_tasks

在调用 rake 任务的操作中,我将 %x(bundle exec rake task_name) 替换为 Rake::Task["task_name"].invoke

感谢 mudasobwa 的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-03
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    相关资源
    最近更新 更多