[英]Initializing Gem-Specific variables information in Ruby On Rails
我现在正在使用Rails 4.0应用程序(使用Ruby 2.0.0)。
我想在我的Rails应用程序的多个页面中使用jenkins_api_client gem与Jenkins进行交互。
此gem通常使用@client
参数,该参数初始化为包含Jenkins服务器的凭据和其他信息。 此参数使用如下所示初始化:
@client = JenkinsApi::Client.new(:server_ip => '0.0.0.0',
:username => 'somename', :password => 'secret password')
初始化后,我想访问此参数并在其上运行多个子例程。 这种初始化需要时间,我真的想避免每次客户端之一想要使用此gem功能时都执行此过程,例如:
# Get a filtered list of jobs from the server
jobs_to_filter = "^test_job.*"
jobs = @client.job.list(jobs_to_filter)
因此,我希望只在Rails服务器启动时执行一次。
我想在我的应用程序的多个页面中使用此参数,可能会在以后使用线程化解决方案(此刻并不重要)。
谁能建议如何实现这一目标? 我希望得到与Rails约定一致的答案。
非常感谢!
例如,您可以创建类似这样的内容:
module JenkinsApi
class Client
class << self
attr_reader :instance, :config
def configure(&block)
@config = OpenStruct.new
block.call @config
end
def instance
@instance ||= JenkinsApi::Client.new @config
end
end
end
end
它允许您在初始化程序中编写:
JenkinsApi::Client.configure do |config|
config.server_ip = '0.0.0.0'
config.username = 'somename'
config.password = 'secret password'
end
然后像这样使用它: JenkinsApi::Client.instance.job.list(...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.