Ruby on rails 4 Rails禁用特定模型的即时加载
我正在编写一个Rails应用程序,其功能是通过ActiveResource与第三方API(streamsend)接口。我使用shopify的fork of ActiveResource进行线程安全操作,因为我的应用程序的不同用户将拥有自己的streamsend API客户端ID和密钥,我不希望我的应用程序在与第三方API交互时踩到它们 我的控制器中有一个与Ruby on rails 4 Rails禁用特定模型的即时加载,ruby-on-rails-4,eager-loading,activeresource,Ruby On Rails 4,Eager Loading,Activeresource,我正在编写一个Rails应用程序,其功能是通过ActiveResource与第三方API(streamsend)接口。我使用shopify的fork of ActiveResource进行线程安全操作,因为我的应用程序的不同用户将拥有自己的streamsend API客户端ID和密钥,我不希望我的应用程序在与第三方API交互时踩到它们 我的控制器中有一个与around\u动作相关联的filter: private # set StreamSend credentials in every re
around\u动作相关联的filter:
private
# set StreamSend credentials in every request
def set_ss_credentials
StreamSend.site,
StreamSend.user,
StreamSend.password = current_user_credentials
yield
ensure
StreamSend.site =
StreamSend.user =
StreamSend.password = nil
end
DEFAULT_SITE, DEFAULT_USER, DEFAULT_PASSWORD = [
Rails.application.secrets.streamsend_api_endpoint, "username", "password" ]
def current_user_credentials
current_user.present? ?
[ Rails.application.secrets.streamsend_api_endpoint, current_user.ss_userid, current_user.ss_key ] :
[ DEFAULT_SITE, DEFAULT_USER, DEFAULT_PASSWORD ]
end
在我的模型中:
class StreamSend < ActiveResource::Base
self.format = :xml
def self.audience
@audience ||= StreamSend::Audience.find(:first)
end
end
class StreamSend
站点和凭据将通过控制器操作和当前登录的用户输入
这在使用WEBrick时效果很好,但由于Rails在生产模式下的默认设置是config.eager\u load=true
,因此我的应用程序无法启动,因为实际模型也缺少站点和凭据
有什么方法可以让我告诉“急切加载”
忽略我的战神相关模型,但急切加载我的所有实际数据库模型吗?在生产模式下启动时出现的错误来自:
def self.audience
@audience ||= StreamSend::Audience.find(:first)
end
默认情况下,将受众硬编码为1允许我在生产模式下启动应用程序。目前这还可以,因为Streamsend每个帐户只支持一个访问者。在生产模式下启动时出现的错误来自:
def self.audience
@audience ||= StreamSend::Audience.find(:first)
end
默认情况下,将受众硬编码为1允许我在生产模式下启动应用程序。目前还可以,因为Streamsend只支持每个帐户一个访问者