我有一个在我通过我的应用程序中的服务类访问的生产机器上运行的服务。
由于许可成本,我想为我的测试和开发环境假冒该服务。
如何在rails应用程序中根据环境加载不同的类定义?
答案 0 :(得分:0)
在您的实施中使用Rails.env
def my_method
if Rails.env.production?
Model.production_method
else
Model.development_method
end
end
答案 1 :(得分:0)
如果我发现你的解释,你就会有一个基于系统功能而不是API或类似功能的课程。这意味着您可能正在使用具有仅在所需环境中加载的类的gem:
mean(A*B)
这个gem似乎有一个类:ExpensiveService,在你的其他环境中不可用。所以你需要做的是创建一个覆盖这个gem的类,并且只在你定义它的环境中加载。
library(data.table)
setDT(DF)[, D := NA^(.N==1)*mean(A*B) , .(grp = cumsum(C==2))]
DF
# A B C D
# 1: 1 2 0 6.00000
# 2: 2 5 0 6.00000
# 3: 4 5 2 34.16667
# 4: 4 7 0 34.16667
# 5: 7 8 0 34.16667
# 6: 9 7 -2 34.16667
# 7: 2 5 0 34.16667
# 8: 4 7 0 34.16667
# 9: 5 1 2 31.66667
#10: 4 7 0 31.66667
#11: 7 8 0 31.66667
#12: 9 7 -2 31.66667
#13: 2 5 0 31.66667
#14: 4 7 0 31.66667
#15: 5 1 2 NA
然后在gem 'expensive_service', group: :production
#lib/expensive_service.rb
class ExpensiveService
def foo
end
end
更多信息: