【问题标题】:rake aborted! cannot load such file Ruby on Rails耙中止!无法加载此类文件 Ruby on Rails
【发布时间】:2016-06-27 14:14:37
【问题描述】:

我正在尝试运行一个使用 rake 任务更新数据库的 ruby​​ 文件。但是加班我运行代码,我收到一条错误消息: 耙中止! 无法加载此类文件 -- app/services/insert_data

ruby 文件“insert_data”位于 app 目录下名为“services”的文件夹中

这是我为运行它而创建的 rake 任务:

require 'app/services/insert_data'

namespace :record_generate do


task :test do
  ruby "app/services/insert_data"
end


end

请帮助消除此错误。

【问题讨论】:

    标签: ruby-on-rails ruby rake


    【解决方案1】:

    为了能够在 rake 任务中使用 Rails 环境,您需要声明:

    namespace :record_generate do    
        task :test => :environment do |_, args|
           ruby "app/services/insert_data"
        end
    end
    

    【讨论】:

      【解决方案2】:

      我认为您应该尝试将 app/services/insert_data 放在脚本目录中。我假设您的 ruby​​ 文件不是具有逻辑的 Rails 模型。我会试试这个。

      1. 获取您的文件并将其放在/script/ 目录中。

      2. 将这行代码放在文件的顶部

        #! /usr/bin/env ruby

        require_relative "../config/environment"

      现在你可以在你的命令行上执行这个:

      rails runner name_of_your_file

      这是一种方法。如果您特别需要使用 rake 任务,我也可以尝试发布答案。

      【讨论】:

      • 我特别需要使用 rake 任务.. 如果你这样做会非常好
      • 明白了。我认为 Nic 或 Bryce 都在这方面为您服务。如果没有,我会尝试这个问题的变体。
      【解决方案3】:

      在你的任务中:test block try -

      Rake.application.rake_require "#{Rails.root}/app/services/insert_data"
      

      【讨论】:

      • 现在我收到一条错误消息,说 rake 已中止!找不到 /Users/Desktop/platform-develop/app/services/insert_data
      • 我会像 Nic 建议的那样调整为 task :test => :environment do,如果里面有类或模块,你能发布你的 insert_data 或显示它被调用的函数/方法吗?
      猜你喜欢
      • 2014-04-23
      • 2015-09-14
      • 1970-01-01
      • 2014-04-24
      • 2017-01-16
      • 2018-10-19
      • 2022-10-23
      • 2012-03-09
      • 2012-12-03
      相关资源
      最近更新 更多