I recently installed Rails 3 beta release but I needed to create new app with the 2.3.5. version. I was searching for a way to do that and I found this
rails _2.3.5_ appname
Unfortunately this will produce an error similar to this
/usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:827:in `report_activate_error': RubyGem version error: railties(3.0.0.beta not = 2.3.5) (Gem::LoadError)
from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:261:in `activate'
from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:68:in `gem'
from /usr/local/bin/rails3:18
To fix this first run
which rails
and you will get a path to your rails executable, in my case this is /usr/local/bin/rails.
Then copy rails to rails3.
sudo cp /usr/local/bin/rails /usr/local/bin/rails3
Then open this file in your text editor (TextMate in my case).
mate /usr/local/bin/rails
and replace two last lines so that your file now looks like
require 'rubygems'
version = ">= 0"
if ARGV.first =~ /^_(.*)_$/ and Gem::Version.correct? $1 then
version = $1
ARGV.shift
end
gem 'rails', version
load 'rails'
Thats it, now you can create your app with specific Rails version with
rails _2.3.5_ appname
Rails, rails3, version
Tomislav Car has just released Phone, Ruby library for phone number parsing, validation and formatting. It should save you a lot of time if you need any of the following:
* you have area where users input phone numbers in many different formats
* output phone numbers in specific format
* you need to send SMS messages from your app
* …
Read the rest of this entry
phone numbers, Rails, Ruby
Rails protects controller actions from CSRF (Cross-Site Request Forgery) attacks with a token based on a random string stored in the session. The token parameter is named authenticity_token by default and will be embedded in all forms and Ajax requests generated by Rails.
You should also add this token to all Ajax request that you hand coded. As suggested in Rails documentation you can add this line in head section.
<%= javascript_tag "window._token = '#{form_authenticity_token}'" %>
and then add authenticity_token to parameters option of Ajax requests
new Ajax.Request('/some/url', {
parameters: "foo=bar&authenticity_token="+_token
});
Remote forgery protection plugin
This can get tedious if you have a lot of Ajax requests so I wrote a simple plugin that adds authenticity token to all Ajax requests automatically.
You can install it with
script/plugin install git://github.com/vlado/remote_forgery_protection.git
Now all you have to do is add this line inside head section of you’re layout
<%= remote_forgery_protection %>
and all non GET Ajax request will have authenticity_token parameter automatically included.
Read the rest of this entry
ajax, authentication, csrf, extjs, forgery, jQuery, plugin, protection, Prototype, Rails, token