2014-08-27 57 views
0

我现在正在Rails 4.0应用程序(使用Ruby 2.0.0)上工作。在Ruby On Rails中初始化Gem特定变量信息

我想用我的Rails应用程序的多个页面使用jenkins_api_client gem,与Jenkins进行交互。

此宝石通常使用@client参数,该参数被初始化为包含Jenkins服务器的凭证和其他信息。 这个参数在使用这样的初始化:

@client = JenkinsApi::Client.new(:server_ip => '0.0.0.0', 
    :username => 'somename', :password => 'secret password') 

初始化完成后,我想在它进入这一参数和运行多个子例程。 这个初始化需要时间,我真的想避免每次客户之一的时间做这个过程中想用这种宝石的功能,如:

# Get a filtered list of jobs from the server 
jobs_to_filter = "^test_job.*" 
jobs = @client.job.list(jobs_to_filter) 

所以,我希望能够做到这一点只有once-时rails服务器启动。

我想从我的应用程序的多个页面使用此参数,可能还有线程解决方案(此刻不是关键)。

任何人都可以推荐如何做到这一点? 我很感激与Rails约定一致的答案。

非常感谢!

+0

它看起来像你可以初始化你的单身jenkins客户端从config/initilizers。 – IS04 2014-08-27 11:55:08

+0

嗨,谢谢你的回答。 你能建议这是如何实现的? 这是设置这些参数的轨道惯例吗? (例如,我知道当其他轨道宝石被导入时,特定的文件被创建,并且我还没有在config/initializers中看到任何这些文件) – cyber101 2014-08-27 12:10:44

+0

我已经写了一些代码示例作为回答 – IS04 2014-08-27 12:18:55

回答

1

如例如,你可以创建类似的东西:

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(...

+0

谢谢! 你可以指定代码的每个部分去哪里? (特别是第一部分)。 另外,我是否应该在我的应用程序的任何地方使用“请求”或“要求”原始宝石? 最后,作为线程应用程序是否会有任何限制? – cyber101 2014-08-27 12:35:05

+0

你可以把'lib/..'放到第一部分,你也可以在初始化部分要求它。线程怎么样我不知道为什么这可能会给一些限制 – IS04 2014-08-27 12:47:25

+0

明白了。谢谢! 如果有任何错误,我会执行此操作并发表评论。 – cyber101 2014-08-28 07:34:46

相关问题