Rails, Firefox, Anime, Mac
This week’s report covers changes from 10 Mar 2008 to 16 Mar 2008 (the day the corresponding Rails Envy podcast was recorded).
Remember how you can do something like:
javascript_include_tag :defaults
and Rails would load all the Prototype JavaScript files and your application.js?
You can now register your own custom expansion symbol too:
# In a Rails initializer.
ActionView::Helpers::AssetTagHelper.register_javascript_expansion :yui => ['yahoo', 'autocomplete', 'calendar']
# In your view.
javascript_include_tag :yui
would result in:
<script type="text/javascript" src="/javascripts/yahoo.js"></script>
<script type="text/javascript" src="/javascripts/autocomplete.js"></script>
<script type="text/javascript" src="/javascripts/calendar.js"></script>
You can do the same with the register_stylesheet_expansion.
This is useful for anyone but in particular plugin developers who have a multiple asset files would appreciate being able to tell users to include JavaScript or stylesheets using a single symbol.
Warning: This patch currently breaks the default symbols like :all (check out the ticket for more info).
Related changeset: http://dev.rubyonrails.org/changeset/9016
Remember how you can say timestamps in a migration and Rails will create the ‘created_at’ and ‘updated_at’ columns for you? You can now also do add_timestamps :table_name and remove_timestamps :table_name in your migrations if you decide to add these columns later to a table:
def self.up
add_timestamps :posts
end
def self.down
remove_timestamps :posts
end
Related changeset: http://dev.rubyonrails.org/changeset/9014
Just like Comment.find(:first), you can now do something like Comment.find(:last). There’s some controversy over whether this is bloat, but DHH makes a good case for it with this example:
class Person
has_many :comments, :order => 'created_at'
end
@some_person.comments.find(:last) # => Returns the most recent comment.
Related changeset: http://dev.rubyonrails.org/changeset/9012
rake db:create used to ignore the ‘charset’ and ‘collation’ options in your database.yml configuration file. This has been fixed so that your created databases now respect those options.
rake db:drop and rake db:migrate:reset also no longer crash with an unhelpful exception if the database has already been dropped, and instead shows a proper error message.
Related changeset: http://dev.rubyonrails.org/changeset/9004
This is a blessing to those of us who use version control systems that don’t support empty directories (like Git). Rails’ default logger (the BufferedLogger), now creates a log/ directory if it doesn’t already exist. This should save you the step of creating/symlinking a log/ directory (or symlinking) on deploy.
Related changeset: http://dev.rubyonrails.org/changeset/9013
A faster implementation of the String#squish (and String#squish!) core extension has been committed.
Related changeset: http://dev.rubyonrails.org/changeset/9015
Turns out that the #excerpt helper method was consistently including an extra character. This has been fixed.
Related changeset: http://dev.rubyonrails.org/changeset/9030
As usual, let me know of any inaccuracies or any suggestions you may have in the comments!
4 Responses to Living on the edge (of Rails) #12
Kamal Fariz
March 20th, 2008 at 9pm
I think that example should read
javascript_include_tag :yui
rather than :monkey :)
Chu Yeow
March 20th, 2008 at 10pm
Ugh you’re right. Thanks for pointing that out!
A Fresh Cup » Blog Archive » Double Shot #170
March 21st, 2008 at 7pm
[...] Living on the edge (of Rails) #12 – More incremental progress is coming our way. [...]
Jim D
March 22nd, 2008 at 2am
Weird that people would argue
:lastis bloat. I feel like I assume it’s already been implemented at least once a month and stick it in my code before kicking myself when I remember it hasn’t been. The use case of wanting to pull the most recent record is obvious, to me anyway.