Use like this:
power-rake db:migrate VERSION=20100913132321
By default the environments development
, test
, cucumber
and performance
are considered. The script will not run rake on a production
or staging
environment.
This script is part of our geordi gem on github.
To only run a single describe
/context
block in a long spec, you can say
spec spec/models/note_spec.rb:545
... where the describe
block starts at line 545.
Note: This will only run examples that are direct children of this block, not descendants further down (when nesting describe
/context
blocks).
You may also pass the line of an it
block to run this exact one.
There are many different methods that allow mapping an Array to a Hash in Ruby.
Enumerable#index_by
(any Rails)users = User.all
users_by_id = users.index_by(&:id)
{
1 => #<User id: 1, name: "Alice">,
2 => #<User id: 2, name: "Bob">
}
In case of a duplicate, the last entry wins.
Enumerable#group_by
(Ruby 1.8.7+)Use group_by
when duplicates are possible.
Hash values are always an Array of elements per group.
users = User.all
users_by_nam...
If you need to find all files inside a directory that were modified in the last 24 hours you can do this:
find . -mtime 1
You can also refer to another file's timestamp like this:
find . -cnewer other_file
This can be used to check against a specific timestamp, too. This is how you check for all files modified today (since 00:00):
touch -t `date +%m%d0000` /tmp/$$
find . -cnewer /tmp/$$
Note that $$
returns the current bash's PID so you will get some file like /tmp/12345 that stays the same for the current shell. This...
Do that for noble reasons only.
This will show you how to create a RSS feed that the Feed Validator considers valid.
Note that RSS is a poorly specified format. Consider using the Atom builder to make an Atom feed instead. Write a note here if you do.
Create a FeedsController
to host the RSS feed. Such a controller is also useful to host other data feeds that tend to gather over the lifetime of an application, e.g. sitemap.xml
.:
class...
The CSS Emoticons plugin is a simple jQuery plugin (and stylesheet) that allows you to turn any text emoticons on the page into cute little smiling faces with pure CSS3 styling (no images whatsoever).
If you want to rename a key of a Ruby hash, this could help you out.
Just put it into something like config/initializers/hash_move.rb
.
In july Google announced a new version of their image serach tool Google Images. But you won't find it on the German google.de site. To reach the new - as I may say, very much better - tool from germany, you have to surf to images.google.com. Et voilà!
delocalize provides localized date/time and number parsing functionality for Rails.
First of all: You could just use RVM which would make the pain go away. If for some reason you can't, proceed.
Do not use rubygems from the apt repository.
tar xvfz rubygems-1.3.7.tgz
sudo apt-get remove rubygems
cd rubygems-1.3.7 && sudo ruby setup.rb
gem
to gem1.8
:\I play mp3 files on my car stereo that are stored on a SD-Card.
When I've copied those mp3 files to the FAT formatted SD-Card on my Mac, then I will see those nasty resource fork files (beginning with "._") for every file and folder on my car stereo. In most cases those resource fork files are important and invisible and don't bother you – on my car stereo ...
When you load a record with find options that have SQL fragments in :select
or :joins
, ActiveRecord will make that record read-only. This is a protective measure by Rails because such a record might have some additional attributes that don't correspond to actual table columns.
You can override that precaution by appending :readonly => false
to affected find options or scope options.
By default Rails sessions expire when the user closes her browser window.
To change this edit your config/initializers/session_store.rb
like this:
ActionController::Base.session = {
:key => '...',
:secret => '...'
:expire_after => 10.years
}
In older Railses the initializer is not available. Set the option in the environment.rb
instead:
config.action_controller.session = {
:key => '...',
:secret => '...'
...
Embedded Flash movies do not always obey element order and z-index
.
To fix this, set the wmode
attribute to transparent
in both <object>
and <embed>
tags:
<object ... >
<param name="wmode" value="transparent" />
<embed ... wmode="transparent" />
</object>
When submitting textarea
s, browsers sometimes include carriage returns (\r
) instead of just line feeds (\n
) at the end of each line. I don't know when this happens, and most of the time it doesn't matter.
In cases where it does matter, use the attached trait to remove carriage returns from one or more attributes like this:
class Note
does 'strip_carriage_returns', :prose, :code
end
Here is the test that goes with it:
describe Note do
describe 'before_validation' do...
If you iterate over a collection of arrays, you can destructure the arrays within the block parameters:
movies_and_directors = [
['The Big Lebowski', 'Coen Brothers'],
['Fight Club', 'David Fincher']
]
movies_and_directors.each do |movie, director|
# do something
end
For nested array (e.g. when you use each_with_index
), you can use parentheses for destructuring:
movies_and_directors.each_with_index do |(movie, director), index|
# do something
end
When a spec only runs when it is called directly, but not as part of the whole test suite, make sure the filename is foo_spec.rb
instead of just foo.rb
.
By default, Cucumber uses mocha. This note shows to use RSpec stubs and mocks instead.
Put the following into your env.rb
:
require 'spec/stubs/cucumber'
Put the following into your env.rb
:
require 'cucumber/rspec/doubles'
Note: Since Cucumber 4 it is important to require these lines in the env.rb
and not any other file in support/*
to register the hooks after any other After
hook in support/*
. Otherwise your doubles are removed, while other After
steps requi...
Since RubyMine 3.1 you can drag tabs across panes/windows and out of the main window to create new windows.
For any version below 3.1 do it like this (will only allow dragging tabs inside their pane, not across panes):
Seriously.
sudo apt-get install i8kutils
i8kmon
Setting the fan speed to high (2) will only work shortly as the fan is somehow controlled automatically.\
This helps you out in bash:
while true; do i8kfan - 2; sleep 0.2; done
There should be a better solution and it will be posted as soon as it's found.
Call with the server's hostname (and user if you have no SSH agent), e.g.
install-gems-remotely my.server.com
# or without agent:
install-gems-remotely me@my.server.com
When you call it from a rails directory, it uploads your Gemfile
, Gemfile.lock
as well as the gemspecs of all vendored gems in to a temporary folder on the server and does a bundle install
there.
If you need to install gems from anothere Gemfile, just do it like this:
BUNDLE_GEMFILE=Gemfile.something; install-gems-remotely my.server.com
This scri...
WMD is a simple, lightweight HTML editor for blog comments, forum posts, and basic content management. You can add WMD to any textarea with one line of code. Add live preview with one line more. WMD works in nearly all modern browsers, and is now completely free to use.