In asp there''s a built''in object, Application, which behaves like the session, but it allows you to share information among all users of the application. (http://www.microsoft.com/windows2000/en/server/IIs/default.asp?url=/windows2000/en/server/IIs/htm/asp/vbob6zkv.htm) It''s just like if every user would be accessing the same session. what is the rails equivalent? And if there is no such thing, how would you implement such a thing? (taking ito account that it would arouse some concurrency issues, in fact asp''s Application object has a lock and unlock method for that purpose Saludos Sas -- Posted via http://www.ruby-forum.com/.
There are a number of load-once files. A logical place is environment.rb.
Consider placing something like this at the end of environment.rb:
# Include your application configuration below
include ''thread''
mutex = Mutex.new
module Settings
SETTINGS = {}
SETTINGS[:additional_snippets] = 5
def config(config_var)
mutex.synchronize do
SETTINGS[config_var]
end
end
end
Then in other code, include Settings and:
snippets = Settings::config(:additional_snippets)
I tested all except the mutex part.
--
View this message in context:
http://www.nabble.com/asp%27s-application-object-rails-equivalent--t1433258.html#a3867558
Sent from the RubyOnRails Users forum at Nabble.com.
Sorry. The concurrency code I originally posted won''t work. This
appears
better.
# Include your application configuration below
require ''thread''
module Settings
MUTEX = Mutex.new
SETTINGS = {}
SETTINGS[:additional_snippets] = 5
def config(config_var)
MUTEX.synchronize do
SETTINGS[config_var]
end
end
def config=(var)
MUTEX.synchronize do
SETTINGS[config_var] = var
end
end
end
--
View this message in context:
http://www.nabble.com/asp%27s-application-object-rails-equivalent--t1433258.html#a3867871
Sent from the RubyOnRails Users forum at Nabble.com.
Phillip Hutchings
2006-Apr-11 22:25 UTC
[Rails] asp''s application object rails equivalent?
On 12/04/2006, at 6:21 AM, s.ross wrote:> There are a number of load-once files. A logical place is > environment.rb. > Consider placing something like this at the end of environment.rb:Of course, that won''t work with fastcgi, which uses a multi process model, or an application server cluster. Either use the database or Drb. I recommend the database, it''s easier, just create a settings table and use a before_filter to get the records. Sure it''s an extra query, but it shouldn''t matter for a decent DBMS. -- Phillip Hutchings phillip.hutchings@sitharus.com http://www.sitharus.com/
This was one of the original suggestions and is, in fact, how I am doing it.
I have a settings table with two fields:
setting_name, :string
setting_value, :string
Here is the model:
class Setting < ActiveRecord::Base
def self.[](index)
return self.find_by_setting_name(index.to_s).setting_value
end
def self.[]=(index, value)
setting = self.find_by_setting_name(index.to_s)
setting.update_attribute(''setting_value'', value)
end
end
With this I can do:
number_of_snippets = Setting[:article_paragraphs].to_i
A possible enhancement is to keep some type information so the explicit
conversion is not required.
--
View this message in context:
http://www.nabble.com/asp%27s-application-object-rails-equivalent--t1433258.html#a3873013
Sent from the RubyOnRails Users forum at Nabble.com.
Thanks for the prompt answers In fact, I was thinking about some way to implement a quick and dirty cache system, specially for those little combo boxes that takes so many trips to the DB to fill. in this thread I explain what I had n mind (when I coulnd''t find the original thread I thought I haven''t posted it at all... sorry for the duplication) http://www.ruby-forum.com/topic/61795#new So, what would be the best way to implement such a thing??? I guess that if I keep the cache relatively small -invalidating it on a time-elapsed or in a fixed lenght basis-, I can load it all on the first access to the cache, and then in one trip to the db I would get several items. Even thought I would be going to the DB, it would be an improvement (well, that depends on wheter retrieving a hundred items in one trip is faster thatn retrieving ten in ten trips) Saludos Sas PS: Before you tell me, I promess I''ll study rails cache system ;-) -- Posted via http://www.ruby-forum.com/.
I''m in agreement with the poster who mentioned that optimizing should wait until you know you have a performance bottleneck. If you are really set on a cache, look into memcached (http://weblog.rubyonrails.com/articles/2006/01/20/caching-models-with-memcached). It might fit the bill. -- View this message in context: http://www.nabble.com/asp%27s-application-object-rails-equivalent--t1433258.html#a3875108 Sent from the RubyOnRails Users forum at Nabble.com.