rails 全局安装的 rake 任务 gem
rails rake task with globally installed gem
我正在尝试编写一个 rake 文件以从 csv 导入数据,我想使用 smarter_csv gem。我在全局安装了 gem(我不想将它添加到我的 Gemfile,因为这是一次性任务)。
在我的 rake 文件中我需要 'smarter_csv' 但是当我 运行 任务时我得到以下错误:
rake aborted!
LoadError: cannot load such file -- smarter_csv
我能找到的每个佣金示例都告诉你只需要 'foo'。在需要 smarter_csv.
之后,我可以在 irb 中手动 运行 代码
我错过了什么?
(如果重要的话,我在 macOS Catalina 上使用 rbenv)
Rails 使用 bundler,并将 gemfile 中提到的 gem 加载到内存中。看起来你没有任何其他选择。
我有一个类似的用例,我试过把它放到这样的开发组中,
group :development do
gem 'smarter_csv'
end
如果你确实想加载一个 gem 而你的 Gemfile 中没有它,你可以在你的 rake 任务中执行以下操作:
$: << '/Users/<user>/.rvm/rubies/ruby-
x.x.x/lib/ruby/gems/x.x.x/gems/smarter_csv-x.x.x/lib'
require 'smarter_csv'
我认为在您的 Gemfile 中使用 require: false
选项的 gem 选项更合适。 gem 在您明确要求之前不会加载。
我正在尝试编写一个 rake 文件以从 csv 导入数据,我想使用 smarter_csv gem。我在全局安装了 gem(我不想将它添加到我的 Gemfile,因为这是一次性任务)。
在我的 rake 文件中我需要 'smarter_csv' 但是当我 运行 任务时我得到以下错误:
rake aborted!
LoadError: cannot load such file -- smarter_csv
我能找到的每个佣金示例都告诉你只需要 'foo'。在需要 smarter_csv.
之后,我可以在 irb 中手动 运行 代码我错过了什么?
(如果重要的话,我在 macOS Catalina 上使用 rbenv)
Rails 使用 bundler,并将 gemfile 中提到的 gem 加载到内存中。看起来你没有任何其他选择。
我有一个类似的用例,我试过把它放到这样的开发组中,
group :development do
gem 'smarter_csv'
end
如果你确实想加载一个 gem 而你的 Gemfile 中没有它,你可以在你的 rake 任务中执行以下操作:
$: << '/Users/<user>/.rvm/rubies/ruby-
x.x.x/lib/ruby/gems/x.x.x/gems/smarter_csv-x.x.x/lib'
require 'smarter_csv'
我认为在您的 Gemfile 中使用 require: false
选项的 gem 选项更合适。 gem 在您明确要求之前不会加载。