Simple, but nice replacement for open-uri library (which uses rather slow Net::HTTP library) which uses libcurl (via curb).
It’s easy to swap the original one just by replacing ‘require open-uri’ with ‘require curb-openuri’. Should work as the original, even with better defaults (which, of course, can be changed).
Several months back I needed to compute NMF of some relatively larges matrices.
Since the native Ruby code was painfully slow, and for some reason even failed to work for some matrices, I decided to write a C implementation which will leverage the GNU Scientific Library (GSL) and then wrap it for using in Ruby application.
It was a neat add-on to the rb-gsl ruby library. What it does is adding NMF module under the GSL::Matrix, and there you have a method nmf which receives a GSL::Matrix and number of columns as a parameter and then returns two matrices.
Since this is an iterative algorithm, the number of runs is limited to 1000, and the desired difference cost metric is set to 10-6.
I tried to contact the author and even posted my code in the issue tracker, but haven’t received any response at the time of writing.
So I decided to create a git-svn mirror on Github and add my changes there.
http://github.com/romanbsd/rb-gsl
You can install the gem using this command:
$ gem sources -a http://gems.github.com/ # (you only have to do this once) $ gem install romanbsd-gsl
This simple fix uses the fact, that if the second argument to the ‘add’ method is a symbol, then a generate_message is called, which does all the voodoo of Rails 2.2 I18n.
I tried to contact the original author to no avail, therefore I’ll post it here, hoping that if anyone needs it, it’ll surface on a Google search.
The fix itself is quite simple:
Index: lib/validates_date_time.rb =================================================================== --- lib/validates_date_time.rb (revision 403) +++ lib/validates_date_time.rb (working copy) @@ -114,7 +114,7 @@ if options[:before] options[:before].each do |r| if r.value(record) and value >= r.last_value - record.errors.add(attr_name, options[:before_message] % r) + record.errors.add(attr_name, :before, :default => options[:before_message] % r) break end end @@ -123,7 +123,7 @@ if options[:after] options[:after].each do |r| if r.value(record) and value <= r.last_value - record.errors.add(attr_name, options[:after_message] % r) + record.errors.add(attr_name, :after, :default => options[:after_message] % r) break end end
I’ve a fork of the git-svn mirror here:
http://github.com/romanbsd/validates_date_time/tree/master
Then, for using it, you’ll just need to have the following path in your locale yml files (for example):
activerecord:
errors:
models:
user:
attributes:
birth_date:
before: 'is wrong'
after: 'is wrong'