我想在rails应用程序中使用savon连接到Web服务,但我不知道从哪里开始。我想将它封装起来,而不仅仅是控制器中的代码。创建它的正确位置在哪里?
答案 0 :(得分:0)
您可以从lib/services
目录开始。通常,非Rails Ruby项目包含lib
内的所有代码,因此它是不错的选择。
但是,默认情况下,lib
目录中的代码不会自动在Rails中重新加载。但你可以用
# config/application.rb
config.autoload_paths << "#{Rails.root}/lib/services"
此外,您应遵循标准命名约定(lib/services/example.rb
应包含类Example
),以便自动加载以正常工作。
答案 1 :(得分:0)
我的建议就像hedgesky一样,在lib
调用lib/third_party/third_party_name
内创建一个子文件夹。
此文件夹将包含连接到您的合作伙伴所需的任何逻辑。
然后,您创建一个包含业务逻辑的服务services/...
,并将调用连接器。
最后在控制器中调用您的服务。
像这样,一切都有他自己的层。更重要的是,如果您稍后使用同一个合作伙伴创建第二个应用程序。您可以在自己的gem中提取lib/third_party/third_party_name
并重复使用它。