twitter-bootstrap-railsを普通にWindowsで使おうとするとlibv8がないからアカンで~的なエラーが出てきてインストールに失敗します。

対策

特定のバージョンはインストールできるのでそれをインストールしましょう。

gem install libv8 --version 3.11.8.0

あとはGemfilegem 'therubyracer', platforms: :rubyのコメントアウトを外してgem twitter-bottstrap-railsを追加すれば万事OK!

追記、より良い解決策

そもそもbootstrap-sassを使えばよいのでは?


RailsのDBからGETでデータの呼び出しはできるけど、PUTで値の追加ができなくてこんなエラーに成った時の対処法

原因

CSRF対策です。

ダメな対策

モデルにこれを追加

サイバーノーガード戦法です。おすすめしません。

良さそうな対策

gem の<a href="https://github.com/xrd/ng-rails-csrf">ns-csrf-rails</a>を使う。わからないことは全部gemにまかせてしまいましょう。


gitは便利なんだけど、リポジトリ名が長くて暗記できなのがツラい所ですよね。
忘れて毎回プラグインのリンクを探すのがめんどくさいのでいつも入れるものをメモっておきます。

rbenv インストール必須なのまとめ


文字幅をしるために全角=2,半角=1で文字サイズが取得したかったので

やり方

Rubyばんざーーい!

参考

2013/02/20/Rubyで全半角混在文字の文字幅を計算する方法 – ヽ(´・肉・`)ノログ


db/seeds.rbUser.createencrypted_passwordを与えてDeviseのユーザーを作ろうとしたら失敗した。

原因

passwordが存在しないためにvalidationに引っかかってしまってる。

対策

passwordを平文で打てば解決するらしいけど、平文のパスワードは使いたくないのでバリデーションの方を無効化してしまいましょう。

User.new(email: someone@example.com).save(validate: false)

でOKです。encrypted_passwordの取得方法は色々あるでしょうが、自分の場合は一度Deviseで作ってからそれをrails console使ってUser.first.encrypted_passwordを取ってきました。

参考

Cannot create Devise account using rake db:seed for Rails 3.0 – Stack Overflow


/usr/bin/env: ruby.exe: そのようなファイルやディレクトリはありません

というエラーがwheneverで作ったcronのログとして出てきて困ってた。

bin/railsの実行権限とか/usr/bin/env ruby --version でちゃんとrubyが動いてるかどうか確認したりとか色々。

答え

Windowsで作ったRailsプロジェクトだったので ruby<strong>.exe</strong>になってた。なんてことだ…。

解決策

bin/railsの一行目usr/bin/env ruby.exe.exeを削除しておきましょう。ふぁっく。


rubyは文字列の配列を作るときに["foo", "bar"] と書くのがめんどくさいからという理由で %w(foo bar) みたいな感じで書けちゃいます。

同じような感じでsymbolもかけないかと思って探してたらruby 2.0.0から%iが使えるようになったので
%i(foo bar) で [:foo, :bar] が書けちゃいます。ステキ!

参考

ruby – Is there way to create a symbol's array like string with %w? – Stack Overflow


“Everyday Rails Testing with RSpec”を購入して読んでると

サンプルプロジェクトが紹介されてたのでgit cloneでダウンロードしてきて bundle install をすると

rbenv: version '2.0.0' is not installed

と出ちゃって困る。しかも ruby -v と確認しようと思ったら再び

rbenv: version '2.0.0' is not installed

??????

「まさか rbenv が壊れた!?」と思って調べてたら、どうやらカレントディレクトリに.ruby-versionがあるとそのバージョンのRubyを参照しようとするために起きるらしい。

対策

自分の場合は2.0.0.p247が入っているので該当のディレクトリでrbenv localすると.ruby-versionの中身が書き換えられて上手く動くようになりました。

Version自体が異なる場合は上手く動かないと困るので該当のバージョンの ruby をrbenv install 2.x.xでインストールしましょう。


net/smtp ライブラリを使うよりも gem mail を使えば簡単にメールが送れるらしいので調べてみた。

方法

まず mail gem が必要なので $ gem install mail でインストールする。

んで、下のように書けばOK!

注意点

Macでは動かなかったので、VPS上のCentOS 6.4で試してます。
25版ポートを開けるのを忘れずに。

参考

email – Ruby Mail gem: Connection refused – connect(2) (Errno::ECONNREFUSED) – Stack Overflow


何回か調べたけど未だに覚えられてないのでもう一度調べ直しました。

確か前回調べたときは英語読むのがめんどくさいから日本語の情報を見て納得したんですが、今回はめんどくさがらずに英語圏で検索したらいつも通りStackOverflowにて大変わかりやすい答えが見つかりました。ありがたや〜。 (人´∀`)

datatime と timestamp の違い

datatime が 1000年から9999年までを表現して timestampunix timestampのフロントエンドに過ぎないので 1970年から2038年までしか扱えない。

扱う範囲が違うのでdatatimeが8バイトtimestampが4バイト使う。

Rails における扱い。

これが一番重要な気がするけど、Railsではどちらを指定してもデータベースにはDATATIME型で保存される

何故かこのことについて述べてるサイトがあんまりなかったのでこの記事を書いておきました。

参考

In Ruby on Rails, what's the difference between DateTime, Timestamp, Time and Date? – Stack Overflow