【问题标题】:Rails error Uninitialized constant importing csvRails错误未初始化常量导入csv
【发布时间】:2016-02-24 19:19:19
【问题描述】:

这是我第一次将 csv 文件导入我的 rails 应用程序。

我在 /lib/tasks/import.rake 中有下面的代码

    require 'csv'
        CSV.foreach("lib/articles.csv", headers: true, encoding: "ISO8859-1") do |row|
            Article.new(title: row["Title"], body: row["Body"], user: User.find(1))
    end

当我运行rake import:articles

我收到此错误:

     NameError: uninitialized constant Article
    /Users/justinMgrant/code/hrsurvival/lib/tasks/import.rake:8:in `block in <top (required)>'
    /Users/justinMgrant/code/hrsurvival/lib/tasks/import.rake:7:in `<top (required)>'
    /Users/justinMgrant/.rvm/gems/ruby-2.2.1/gems/railties-4.2.2/lib/rails/engine.rb:658:in `block in run_tasks_blocks'
    /Users/justinMgrant/.rvm/gems/ruby-2.2.1/gems/railties-4.2.2/lib/rails/engine.rb:658:in `each'
    /Users/justinMgrant/.rvm/gems/ruby-2.2.1/gems/railties-4.2.2/lib/rails/engine.rb:658:in `run_tasks_blocks'
    /Users/justinMgrant/.rvm/gems/ruby-2.2.1/gems/railties-4.2.2/lib/rails/application.rb:452:in `run_tasks_blocks'
    /Users/justinMgrant/.rvm/gems/ruby-2.2.1/gems/railties-4.2.2/lib/rails/engine.rb:453:in `load_tasks'
    /Users/justinMgrant/code/hrsurvival/Rakefile:6:in `<top (required)>'
    (See full trace by running task with --trace)

知道我做错了什么吗?

【问题讨论】:

  • 请添加完整的 rake 任务。我猜你没有使用 task :taskname =&gt; :environment 在 Rails 环境的上下文中创建 rake 任务。 stackoverflow.com/questions/7044714/…
  • 这就是我在 rake 任务中的内容,但是当我添加task articles: :environment 时出现此错误Don't know how to build task 'import:articles' (see --tasks)
  • 这就是您的 rake 文件的全部内容?

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


【解决方案1】:

问题是您实际上并没有在 rakefile 中定义您的任务。这应该可以让您能够运行rake import:articles

namespace :import do

  desc 'An optional description for what the task does'
  task :articles => :environment do
    # your code goes here
  end

end

rake import:articles 表示要在名为 import 的命名空间中查找名为 articles 的任务,这就是为什么命名空间对于您当前正在尝试的事情是必要的。

正如@max 所提到的,利用task :articles =&gt; :environment 是告诉任务在您的Rails 环境上下文中运行的原因,这将使您的Articles 模型和您在该任务中可用的任何其他模型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 2011-04-13
    • 1970-01-01
    相关资源
    最近更新 更多