如何从gem

时间:2016-06-09 08:19:56

标签: ruby-on-rails ruby rubygems monkeypatching

我使用gem money它在我的本地机器上运行正常但是当我尝试在我的生产服务器上部署时,我的Could not find sixarm_ruby_unaccent-1.1.1 gem money >

我曾尝试在我的生产服务器上手动安装它但遇到同样的错误。

所以我决定从gem中删除这部分代码。

但如何正确地做到这一点?

只需从gem中删除此代码或我该怎么办?

LIB / Money.rb

require "bigdecimal"
require "bigdecimal/util"
require "set"
require "i18n"
require "sixarm_ruby_unaccent"
require "money/currency"
require "money/money"

# Overwrites unaccent method of sixarm_ruby_unaccent.
class String
  def unaccent
    accentmap = ACCENTMAP
    accentmap.delete("\u{0142}") # Delete ł symbol from ACCENTMAP used in PLN currency
    accentmap.delete("\u{010D}") # Delete č symbol from ACCENTMAP used in CZK currency
    accentmap.delete("\u{FDFC}") # Delete ﷼ symbol from ACCENTMAP used in IRR, SAR and YER currencies
    accentmap.delete("\u{20A8}") # Delete ₨ symbol from ACCENTMAP used in INR, LKR, MUR, NPR, PKR and SCR currencies
    split(//u).map {|c| accentmap[c] || c }.join("")
  end
end

我需要删除require "sixarm_ruby_unaccent"unaccent方法

1 个答案:

答案 0 :(得分:0)

我想删除该行可能会给您的应用程序带来另一个错误。我很想知道它先做了什么。但是,您是否曾尝试再次删除Gemfile.lockbundle install?如果您想继续,最好gem 'money', require: false然后在初始化程序中,或在您的lib / money.rb中

require "bigdecimal"
require "bigdecimal/util"
require "set"
require "i18n"
require "money/currency"
require "money/money"

将lib目录添加到autoload_path中,你应该好好去。 但是,我认为更好的方法是首先查找导致错误的原因,而不是将此错误引入您的应用程序