【发布时间】:2016-10-09 18:46:40
【问题描述】:
我使用 gem money 它在我的本地机器上工作正常,但是当我尝试在我的生产服务器上部署时,我收到错误 Could not find sixarm_ruby_unaccent-1.1.1 它对 money gem 的依赖
我尝试在生产服务器上手动安装它,但遇到了同样的错误。
所以我决定从 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" 和 unaccentmethod
【问题讨论】:
-
我认为这是错误的方法,除非您愿意重新编写然后猴子修补部分 gem。您应该调查为什么问题发生在您的服务器上,而不是因为无法安装 gem 而改变它的工作方式。
-
@lcguida。好的,我怎样才能猴子补丁宝石?
-
好吧,我想建议你不要这样做。您需要了解 gem 才能执行此操作,并确保不会破坏其他内容,并且要知道 gem 中的任何未来更改可能与您正在更改的代码不兼容。
-
特别是知道
sixarm_ruby_unaccent是用纯Ruby编写的,安装它听起来最合乎逻辑。 -
@MladenJablanović 我已将其添加到我的 gemfile 中,也已将其安装到生产服务器
标签: ruby-on-rails ruby rubygems monkeypatching