将 Rails Twitter 客户端初始化程序放入初始化程序中
Putting the Rails Twitter Client initializer in an Initializer
我有一个初始化器twitter.rb
:
require 'twitter'
client = Twitter::REST::Client.new(
{
:consumer_key => "",
:consumer_secret => "",
:access_token => "",
:access_token_secret=> "",
}
)
然后我希望能够在其他文件中访问这个 'client',比如一个名为 tag.rb
的模型,我可以这样做吗:
puts client
我建议不要使用 'client' 这个词,因为您将来可能需要其他词,这可能会造成混淆。但最终..你是如此接近。
初始化程序中的客户端代码是 运行,但您无法访问它,因为它已本地化。您需要做的就是让您的客户端全局化,然后在需要时引用全局变量。
因此您的初始化程序变为:
$twitter_client = Twitter::REST::Client.new(
{
:consumer_key => "",
:consumer_secret => "",
:access_token => "",
:access_token_secret=> "",
}
)
你对它的调用变为:
$twitter_client.search("#railsiscool")
请帮自己一个大忙,不要过度使用全局变量,它们在大多数 rails 应用程序中意义不大,可能会给您带来问题。
仅供参考,这些凭据应从您的初始化程序中移出并移至环境变量中,例如ENV['TWITTER_ACCESS_TOKEN']
等..
关于在整个代码中访问客户端,您有几个选项。
将 Twitter 客户端存储在全局变量中。全局变量通常被认为是一个坏主意。 $twitter_client = Twitter::REST::Client.new(...)
创建单例class。这可能不是线程安全的。
使用工厂模式生成新客户端when/where你需要它。例如,
在app/services/twitter_api.rb
中:
class TwitterAPI
def client
@client ||= Twitter::REST::Client.new do |config|
config.key = ENV['VALUE'] # for each required credential
end
end
end
TwitterAPI.new.client.do_something()
我有一个初始化器twitter.rb
:
require 'twitter'
client = Twitter::REST::Client.new(
{
:consumer_key => "",
:consumer_secret => "",
:access_token => "",
:access_token_secret=> "",
}
)
然后我希望能够在其他文件中访问这个 'client',比如一个名为 tag.rb
的模型,我可以这样做吗:
puts client
我建议不要使用 'client' 这个词,因为您将来可能需要其他词,这可能会造成混淆。但最终..你是如此接近。
初始化程序中的客户端代码是 运行,但您无法访问它,因为它已本地化。您需要做的就是让您的客户端全局化,然后在需要时引用全局变量。
因此您的初始化程序变为:
$twitter_client = Twitter::REST::Client.new(
{
:consumer_key => "",
:consumer_secret => "",
:access_token => "",
:access_token_secret=> "",
}
)
你对它的调用变为:
$twitter_client.search("#railsiscool")
请帮自己一个大忙,不要过度使用全局变量,它们在大多数 rails 应用程序中意义不大,可能会给您带来问题。
仅供参考,这些凭据应从您的初始化程序中移出并移至环境变量中,例如ENV['TWITTER_ACCESS_TOKEN']
等..
关于在整个代码中访问客户端,您有几个选项。
将 Twitter 客户端存储在全局变量中。全局变量通常被认为是一个坏主意。
$twitter_client = Twitter::REST::Client.new(...)
创建单例class。这可能不是线程安全的。
使用工厂模式生成新客户端when/where你需要它。例如,
在app/services/twitter_api.rb
中:
class TwitterAPI
def client
@client ||= Twitter::REST::Client.new do |config|
config.key = ENV['VALUE'] # for each required credential
end
end
end
TwitterAPI.new.client.do_something()