Witam.
Buduję treningowo plugin.
Mam tam singeltona.
[code]# coding: utf-8
class SmsGateway
@@instance = SmsGateway.new(param1, param2)
private_class_method :new[/code]
W związku z tym mam pytanie jak przekazać do pluginu parametry param1, param2.
Gdzie je umieścić i w jakiej formie aby podczas startu aplikacja railsowa przekazała te parametry do pluginu?
Po pierwsze to naiwne (tzn. taka jaką tu próbujesz napisać) implementacje singletonu są dziurawe, w książce z kilofem jest wyjaśnione dlaczego. Skorzystaj z istniejącego już w bibliotece standardowej modułu: http://www.ruby-doc.org/stdlib/libdoc/singleton/rdoc/index.html
@Tomash: Co jest w tym dziurawego? Nie mam kilofa pod ręką.
EDIT:
Tak przy okazji, w railsach wszystkie singletonowe klasy (Rails::Application, Rails::Engine itp) są zaimplementowane tym właśnie sposobem, bo Singleton dodaje jeszcze kilka rzeczy, które w railsach nie były pożądane (teraz nie pamiętam już o co chodziło, spojrzę później w kod)
Wszystko zależy od tego co chcesz osiągnąć. Jeżeli chodzi Ci o to jak użytkownik ma skonfigurować Twój plugin, to najczęściej pluginy są konfigurowane w config/initializers, np:
[code]# config/initializers/sms_gateway.rb
SmsGateway.configure(:login => ‘something’, :api_key => ‘123qwe’)[/code]
możesz do tego napisać generator, żeby taki plik z przykładowymi danymi stworzył się automatycznie po zrobieniu np.: