Couldn't create database for ...
When you run rake db:create
and get this error message
Couldn't create database for {"encoding"=>"utf8", "username"=>"root", "adapter"=>"mysql", "database"=>"project_development", "password"=>"topsecret"}, charset: utf8, collation: utf8_unicode_ci (if you set the charset manually, make sure you have a matching collation)
make sure the user you have specified (root/topsecret) in your database.yml
has access to MySQL. You can check this by running mysql -uroot -p
.
Solving "cannot remove Object::ClassMethods"
Most likely you run rake
and your code is causing an exception which is not the one shown in your terminal.
Rails tries to catch this exception and clean up constants but -- while it's still booting up -- fails on this which causes another exception:
rake aborted!
cannot remove Object::ClassMethods
Running rake
with the --trace
parameter will give you no love; the backtrace is useless in most cases.
Try these approaches:
First: Check if there is a helpful error message
- Ha...
Fixing Homebrew "Permission denied" issues
When installing your first formula, Homebrew may complain about not being able to access certain directories. The easiest solution to this is:
chown <username> /usr/local/Cellar /usr/local/share # create these directories if they do not exist
Then sudo brew install abc
and you're going.
Dealing with Solr's "404 Not Found" response
When your Solr seems to be started properly (a process is running with the correct data directory) but never responds properly and replies (via the API or web interface) with...
404 "Not Found"
... check if Solr's log directory is actually writable for the user running it.
When Rails does not recognize Rake tasks in lib/tasks
When you put a Rake task into lib/tasks
, but running it fails with...
Don't know how to build task name:of:task
... does your Rake task's filename end in .rb
? It needs to end in .rake
instead.
What's My DNS? Global DNS Propagation Checker
whatsmydns.net is an online service that allows you to instantly perform a DNS lookup to check a hostnames current IP Address and other DNS information against a selection of random name servers around the world. This is especially useful to check the current state of DNS propagation after making changes to your domains zones.
Disable output when using cURL
cURL makes a web request and shows you the response body.
You can redirect the response body to /dev/null
just like for many other programs. But if you do that, cURL will display some short information about the request you are making:
$ curl http://www.example.com/ > /dev/null
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 30865 100 30865 0 0 4793 0 0:00:06 0:00:06 --:--:-- 10199
If you wan...
Make an HTTP request to a machine but fake the hostname
Consider you have a website vhost listening to www.example.com
, redirecting all incoming requests that do not talk about the configured hostname (this is often used to redirect users to http://www.example.com
when entering only http://example.com/
).
If you want to make a request to that site's web server without actually talking to www.example.com
(e.g. because this is a load balancer's address but you want to access one specific machine), you cannot just request machine1.example.com
or localhost
as the above vhost will redirect...
sstephenson/execjs - GitHub
ExecJS lets you run JavaScript code from Ruby. It automatically picks the best runtime available to evaluate your JavaScript program, then returns the result to you as a Ruby object.
We forked craken
We forked craken today and fixed one of the issues we had with new (>0.8.7) rake versions.
The craken:install
rake task raised a "can't convert Hash into String" error e.g. while deploying with Capistrano.
gpg encrypted backup fails in crontab
If you using gpg for your encrypted backup and it fails after you put it in crontab make sure you have the "--no-tty" option enabled for gpg.
Otherwise you get this error: "cannot open /dev/tty: No such device or address" and the backup size is 0 byte.
Fixing "Lock obtain timed out: SimpleFSLock" for Solr
If your application raises an error like ...
Couldn't connect to the Solr server at http://127.0.0.1:8983/solr. 500 "Lock_obtain_timed_out_SimpleFSLock(...)"
... and if your jetty.request.log
contains entries such as ...
127.0.0.1 - - [13/09/2011:12:42:23 +0000] "POST /solr/update HTTP/1.1" 500 4412
127.0.0.1 - - [13/09/2011:13:37:03 +0000] "POST /solr/update HTTP/1.1" 500 4309
... you probably have a lucene-...-write.lock
file lying around in your Solr data directory that is not being cleaned up properly. This causes...
A few git tips you didn't know about
Random list of useful git commands for advanced users. I found some of them useful.
Line wrap text from a Ubuntu Linux terminal
You can use fold
:
fold -sw 60
You can now paste your texts. fold
will echo them back, word-wrapped after 60 columns. Exit with Ctrl+C
or Ctrl+D
.
You can also use files for input and output:
fold -sw 60 input.txt > output.txt
Open a Nautilus window in your terminal's working directory
In order to open a Nautilus window in your terminal's working directory, you can say:
nautilus .
Dragging a file into your terminal pastes the file path
When you drag a file from a Nautilus window into a terminal window, the file's path will be pasted into the terminal. This also works with multiple files.
Auto-generate state_machine graphs as PNG images
The state_machine gem comes with a rake task that lets you generate PNG graphs from any model using state_machine
.
Install the required dependencies like this:
sudo apt-get install graphviz
sudo gem install ruby-graphviz
You can now generate a graph like this:
rake state_machine:draw CLASS=ModelUsingStateMachine
Replace ModelUsingStateMachine
with the name of your model class.
If it the raketask does not exist for you, add to Rakefile
(in your pr...
"Address already in use" with autossh
If you get an error "Adress already in use" with autossh check with lsof
or netstat
if something already listen on the Ports you want to use.
There are three Ports you have to look at. If your Command look like this:
/usr/local/bin/autossh -f -M 5100 -g -N -C -L 8080:127.0.0.1:80 example.com -i ~/.ssh/id_rsa -l user
The following three ports need to be available:
- 8080: The Port you want the tunnel to listen
- 5100: The Autossh Monitoring Port
- 5101: Autossh also uses the Monitoring Port +1
Defining custom errors in Ruby
class Errormaster
CoffeeIsOut = Class.new(StandardError)
# is prettier than
class CoffeeIsOut < StandardError; end
end
Reference such an error class with Errormaster::CoffeeIsOut
.
How to install a frozen version of Firefox for your Selenium tests
Whenever Firefox updates, all your Cucumber features that use Selenium break. This is annoying.
In order to remedy this, version 0.5.0 of our geordi gem comes with a script that helps you create an unchanging version of Firefox for your Selenium tests. In particular, this new copy of Firefox will have the following properties:
- It won't update itself with a newer version
- It can co-exist with your regular Firefox installation (which you can update at will)
- It will use a profile separate from the one...
Capistrano: Different usernames for each server
If you have different users for different servers, don't use set :user
. Encode the username into the server definition instead:
server "username@servername.tld", :app, :web, :cron, :db, :primary => true
Compose a regular expression from other RegExp objects
You can create a Regexp
object from existing Regexp
objects by using the interpolation syntax you know from strings:
re1 = /x/
re2 = /a#{re1}b/
'aaxbb' =~ re2 # => 1
Note
If your regular expression contains backreferences like
\1
, they may no longer refer to the correct capture group after concatentation.
Turn off SSL for scenarios with Selenium
Selenium does not speak SSL because it uses WEBrick that doesn't. When you use Selenium for Cucumber scenarios that visit pages with SSL, they will fail.
To turn off SSL only for scenarios that are executed on WEBrick, put this method into your application controller.
def ensure_proper_protocol
request.headers['SERVER_SOFTWARE'].andand.include?('WEBrick') || super
end
Machinist's #make breaks on has_many associations when defining method `empty?`
Observed on Rails 2.3 and machinist 1.0.6
Like the title says, when you define the method empty?
like in the following example, you may not longer use collection.make
.
class Book
has_many :pages
def empty?
pages.empty?
end
end
Assuming
b1 = Book.find(1)
b2 = Book.find(2)
instead of expected
b1.pages.make #=> #<Page id: 1, book_id: 1>
b2.pages.make #=> #<Page id: 2, book_id: 2>
you'll get
b1.pages.make #=> #<Page id: 1, book_id: 3>
b2.pages.make #=> #<Page id: 2,...