Just a quick reminder:
To revert a complete working copy or a single file use:
svn merge -rHEAD:PREV . # or svn merge -rHEAD:PREV path/to/file svn commit -m "reverted"
Just a quick reminder:
To revert a complete working copy or a single file use:
svn merge -rHEAD:PREV . # or svn merge -rHEAD:PREV path/to/file svn commit -m "reverted"
The last Passenger update brought some good explanation off the problems regarding Passenger and memcache-client (see here).
Smart spawning of Passenger processes creates shared file descriptors. As the connections to memcached are sockets they are shared as well so data on them gets corrupted which is explained very nicely in the Passenger documentation: Example 1: Memcached connection sharing (harmful).
The solution presented there works like a charm. The reestablish_connection_to_memcached line is actually not more than CACHE.reset where CACHE is the reference to the memcache connection.
After that change, spawning methods smart-lv2 and smart will work in connection with environment.rb configured memcache connections.
Edit: As requested in the comments, a little example:
memcache_options = { :c_threshold => 10000, :compression => true, :debug => false, :namespace => 'some_ns', :readonly => false, :urlencode => false } CACHE = MemCache.new memcache_options CACHE.servers = '127.0.0.1:11211' begin PhusionPassenger.on_event(:starting_worker_process) do |forked| if forked # We're in smart spawning mode, so... # Close duplicated memcached connections - they will open themselves CACHE.reset end end # In case you're not running under Passenger (i.e. devmode with mongrel) rescue NameError => error end
In this case, CACHE is the global constant that i use to access my memcache-client.
I guess you’ll need to do the same with the global Rails.cache object, but i’m not sure. Anyway, the above solution works for me.
I recently switch from a mod_proxy / thin setup to Phusion Passenger and my application started to do the funniest things and the production.log was full with errors related to memcached.
It seems, that passengers spawn method “smart” isn’t compatible with memcached. Within seconds on a lightly loaded server the cache gets corrupted big time.
I got better results with a newer memcache client (the ruby gem actually), but for that i need to remove the client from the rails vendor lib. Furthermore, under higher load there still where errors.
Only solution is to set the spawn method to conservative like so
RailsSpawnMethod conservative
Problem seems to be known in the Phusion and Rails teams.
Times in RSS Feeds and the like are formatted as RFC3339 most of the time. You can save yourself from strftime by using
Time.now.xmlschema
I couldn’t find this in the documents, but Geoff Buesing showed me the hooks to turn off Ruby On Rails’ automatic timezone conversions for some columns of a model or a complete model:
# Turn it off for just some columns class Picture < ActiveRecord::Base def self.skip_time_zone_conversion_for_attributes [:created_at, :published_at] end end # Turin it off for the whole model class Picture < ActiveRecord::Base def self.time_zone_aware_attributes false end end
Thanks a lot!