Вопрос по ruby-on-rails-3 – как создать единый глобальный объект в рельсах

21

У меня есть объект, который я хочу создать один раз и который доступен в одной из моих моделей. Куда я его положу? Боюсь, если я добавлю его в файл класса модели, он будет создаваться каждый раз, когда я создаю новый экземпляр этой модели. Я хочу, чтобы этот объект создавался только один раз при запуске. Вот объект:

require 'pubnub'    
publish_key   = 'fdasfs'
subscribe_key = 'sdfsdsf'
secret_key    = 'fsdfsd'
ssl_on        = false

pubnub_obj = Pubnub.new(publish_key,
                    subscribe_key,
                    secret_key,
                    ssl_on)

Я использую его так в модели:

class Message < ActiveRecord::Base

  def self.send_new_message_client(message)
    message = { 'some_data' => message }
    info = pubnub_obj.publish({
                            'channel' => 'testing',
                            'message' => message
                          })
    puts(info)
  end

end
Error: User Rate Limit Exceededgithub.com/pubnub/ruby/blob/master/examples/pubnub_livestream/… Vincil Bishop

Ваш Ответ

2   ответа
2

require 'singleton'

class Pubnub
  include Singleton

  attr_writer :publish_key, :subscribe_key, :secret_key, :ssl_on

  def publish
    #...
  end
end

require 'pubnub'    
class Message < ActiveRecord::Base
  Pubnub.instance.publish_key = 'xyz'
  Pubnub.instance.subscribe_key = 'xyz'
  Pubnub.instance.secret_key = 'xyz'
  Pubnub.instance.ssl_on = 'xyz'

  def self.send_new_message_client(message)
    message = { 'some_data' => message }
    info = Pubnub.instance.publish({
                            'channel' => 'testing',
                            'message' => message
                          })
    puts(info)
  end
end

require 'pubnub'    
class Message < ActiveRecord::Base
    @@pubnub_obj = Pubnub.new('xyz', 'xyz', 'xyz', 'xyz')

  def self.send_new_message_client(message)
    message = { 'some_data' => message }
    info = @@pubnub_obj.publish({
                            'channel' => 'testing',
                            'message' => message
                          })
    puts(info)
  end

end
34

require 'singleton'

class Pubnub
  include Singleton

  def initialize(publish_key, subscribe_key, secret_key, ssl_on)
    # ...
  end

  def publish
    # ...
  end
end

instance

Pubnub.instance.publish

modelslib

Error: User Rate Limit Exceededstackoverflow.com/questions/24927928/…
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы