Rubyでのハマりポイント


俺的ハマリポイントをつらつらと記録していきます。
ハマり次第追記していきます。
適宜ツッコミをよろしくお願いいたします!


invalid multibyte char (US-ASCII) (SyntaxError)

これは、ソースファイルに日本語が含まれる場合のエラー。
該当ソースファイルの先頭に以下のおまじないを追加

# -*- coding: utf-8 -*-

Ruby 1.9上のRailsでinvalid multibyte char (US-ASCII)の対処


odd number list for Hash (SyntaxError)

このエラーがSyntaxエラーが原因じゃないときは、Rubyのバージョンを疑った方がいい。
これからRubyを始めるためにやったことメモ3(miからRubyの最新版が呼べない)

$ rvm use 1.9.2 --default

1.8.xの時にエラーが出てた。なので新しいバージョンにセットしてやる。(なぜか戻っちゃうことがあるんだけどなぜ?)


NameError - uninitialized constant Object::Something

これは、Rubyの規則があるらしくって、「モデルの名前は単数系にするべきだという、Railsの規約を守っていなかっただけ」で出るらしい。先頭大文字にしてもダメだった。Ruby奥深いよRuby。
Railsメモ:多対多の関連を利用したときにNameError: uninitialized constant


syntax error, unexpected tIDENTIFIER, expecting keyword_end (SyntaxError)

コメントアウトを間違えて // にしたら出た。 # にしたら直った。

他の言語に慣れた人がRubyを使ったときにつまずきがちな点


blockとかProcとかlambdaとかなによ

Rubyのblock、Proc、lambdaを理解する


データの永続化が出来ない

HerokuでRubyしてみてわかったこと


no such file to load -- config (LoadError)

13:18:40 web.1  | web.rb:3:in `require': no such file to load -- config (LoadError)

パスを明示化しないといけない。この場合だと、

$ require 'config'

$ require './config'

なんかよくわからんとこでLoadErrorとかでる

rubyのバージョンが古い可能性なので新しくする。

$ ruby --version
ruby 1.8.7 (2011-02-18 patchlevel 334) [i686-darwin10]

$ rvm use 1.9.2 --default

--defaultオプションをつけるとデフォルトでそのバージョンになる。


heroku 参考集


bundle install 関連

$ bundle install
Resolving dependencies...
Your Gemfile has no remote sources. If you need gems that are not already on
your machine, add a line like this to your Gemfile:
    source 'https://rubygems.org'
Could not find gem 'capistrano (>= 0) ruby' in the gems available on this machine.

bundle installCould not find gemと怒られたら、
Gemfileの先頭に下記を追加。

source 'https://rubygems.org'