如何制作rails服务器宽对象?

时间:2017-08-13 18:43:45

标签: ruby-on-rails ruby redditkit

我正在使用RedditKit gem并且为了访问某些元素,我需要向reddit api发送请求以创建"client" object。以下是我目前的逻辑:

## application_controller
before_action :redditkit_login

private

def redditkit_login
  @client = RedditKit::Client.new ENV["reddit_username"], ENV["reddit_password"]
end

正如你在我的逻辑中所看到的,在每次请求之前,我随后会创建一个新的客户端对象,然后在任何地方使用它。

我的问题是,如何制作一个客户端对象,可用于从任何地方提供所有请求?

这背后的动机是速度。对于服务器的每个请求,我正在发出reddit的新请求,然后响应原始请求。我想让客户端对象随时可用。

1 个答案:

答案 0 :(得分:0)

你有很多选择。一个简单的方法是创建一个config/initializers/reddit_client.rb文件并放入其中:

  RedditClient = RedditKit::Client.new ENV.fetch("reddit_username"), ENV("reddit_password")

(注意我切换到ENV.fetch,因为如果找不到密钥会出错,这可能会有帮助。)

您还可以将文件重命名为app/models/reddit_client.rb。虽然它不是真正的模型,但该文件夹也是自动加载的,因此它也可以正常工作。