このコードをワンラインで、

とかくと動かないので、routes.rb は DSLなのでブロックの書き方に影響が出てるようです。何でこうしてるかの詳しい理由はよくわからない。


rails new したらbundle install が atomic の所でコケた。何か前も同じエラーに引っかかって結構検索した記憶があったんだけど今回も対処法を探すのに結構な時間がかかってしまった。

エラーメッセージはこんなの。

解決策

エラーメッセージからだと全くわからないんだけれども、どうやらこれは Xcodeのバージョンをアップとか新規インストールした時に一度立ち上げて利用規約にOKと答えておかないとコンパイラーが使えずにでるらしい。

なので、Xcodeを一度立ち上げて規約にOKしたら解決。と前回はここで解決したんですがどうやら今回はこれだけじゃだめらしい。

今度こそ解決策

Commandline toolsを再インストールするために xcode-select --installしたら解決しました!
Maverickに上げたのが原因らしいです。
自分の場合はターミナルの再起動するまでCommandline toolsのアップデートが認識できませんでしたが必須なのかどうかはわかりません。

参考

Ruby – Mac OS X 10.9 Mavericks で Rails の bundle install に失敗する件の対処法 – Qiita [キータ]


Zurb Foundationのトップバーの右上のメニューですが、デフォルトでは幅が940pxを切るとMenuに折りたたまれてしまうという結構広い設定になっています。

もうちょっと幅が狭くても出るようにしたかったので修正しました。

対策

設定ファイルを以下のように書き換えます。環境はRailsです。

ちなみに[Menu]自体がでなくて少し困ったのですがtoggle-topbar menu-icon を設定してなかったのが原因だったようです。


Railscasts のTwitter の項目通りに書いてると since_id parameter is invalid. のエラーでつまづきました。

どうやらTwitterAPI1.1からの変更で since_id0 を指定できなくなったのが原因のようです。

もちろんレコードにすでにつぶやきが入ってれば問題ないんですが初回の何も入ってない時にこけてしまうわけです。

対策

と返り値に最低でも1が入るようにしておけばOKです。文字列にしてるのは twitter_idを文字列で保持してるからです。

参考

API v1.1 statuses/user_timeline since_id parameter is invalid | Twitter Developers


attr_accessibleはRails4では使えなくなったのにユーザー管理の定番 gem deviseではまだ使っているようなので新しい昨日の Strong parameter に書き換えておきましょう。

具体例

devise の設定で User モデルにこんなのが書いてると思うので

その行を削除して下の方にこれを追加しましょう。

参考

attr_accessible


何故だか理由はさっぱりわかりませんが、どうにもおかしな動きが route.rb をいくらいじってもなおらないので色々情報を探してたら、config の omniauth.rb を消したら動きました。

consumer_key とかは devise.rb に書いておきましょう。

参考

ruby on rails 3 – Authentication failure : Devise + OmniAuth + Twitter – Stack Overflow


devise と omniauthを組みわせて使うと default の emailencrypted_password が必ず値を持たなければならない null => false の制限が邪魔だったのでMigrationで削除しようとしたけど方法がわからなかったので調べてみた。

やりかた

参考

Rails Migration: Remove constraint – Stack Overflow


Macの環境構築をやり直したので、入れてるgemの一覧を出してみました。

なので、だいたい名前のわかるやつだけ入れることにします。わかんないのは依存関係のgemか全く使ってないgemなので必要になったらその時に入れることにします。


既に該当するモデルの値が存在していたら update で値を更新して、まだ存在しない場合は create で新しくモデルのインスタンスを作成したい時ありませんか? 少なくとも自分にはありましたし、検索でここに辿り着いたあなたもきっとあると思います。

Railsならきっと簡単な方法があると思ったので調べてみたらありました。

やり方。

こんな感じでOK。

注意点

ちなみに create_or_updateActiveRecord::Callbacks の private 関数として用意されてるご様子。

create_or_update (ActiveRecord::Callbacks) – APIdock

参考

ruby – create_or_update method in rails – Stack Overflow