0

I am using the RedditKit gem and in order to access certain elements, I need to send a request to reddit api to create a "client" object. Below is my current logic:

## application_controller
before_action :redditkit_login

private

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

As you can see in my logic here, before EVERY REQUEST, I am subsequently making a new client object and then using that everywhere.

My question is, how do I only make one client object which can be used to serve ALL requests from anywhere?

My motive behind this is speed. For every request to server, I am making a new request to reddit and then responding to the original request. I want to have the client object readily available at all times.

Dillawes0me
  • 190
  • 4

1 Answers1

0

You have a lot of options. A simple one would be to create a config/initializers/reddit_client.rb file and put in there:

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

(note I switched to ENV.fetch because it will error if the key is not found, which can be helpful).

You could also rename the file as app/models/reddit_client.rb. Although it's not really a model, that folder is also autoloaded so it should work as well.

max pleaner
  • 26,189
  • 9
  • 66
  • 118