状態

こういうふうに書いたらtarget: '_blank'が効かなくて困った。

対策

simple_formataタグのtarget属性を取り除いてしまうので順番を入れ替えて、こう書くとOK。

参考

https://github.com/tenderlove/rails_autolink/issues/20#issuecomment-24818734


複数カラムの値が重複してるオブジェクトの情報を取るために

とするとこんな感じのidnilの配列が返ってくるので

な感じで適当に処理しましょう。

追記

こちらのほうがスッキリ書けますね。


Hashのキーをリネームしたかったけどデフォルトのメソッドはないようなので書いた

使い方

変更前のキーが存在しない時と、変更後のキーが存在する時は何もしない。
実際の入れ替え処理はself[new] = self.delete(old)だけで終わってます。

参考

http://kmckelvin.com/blog/2014/06/renaming-items-in-a-ruby-hash


rake task で長時間起動するため排他処理をしておかないと複数起動してしまう物があったので多重起動を禁止にしました。

でOK。呼び出し部分をメソッド化とかしたかったけど、上手くいかなかったのでとりあえずこれで。タスクのブロック引数としてtaskをちゃんと書いておかないとtask.nameが使えないので注意しましょう。

参考

ShellScript – Rakeタスク実行時、プロセス起動数を確認して排他制御する – Qiita


というように条件に合致しない時に returnを使って処理を抜けようとするとこんなエラーになります。

これは rake task がメソッドではなくブロックだから起きるので next を使ってやりましょう。それで抜けれます。

ちなみにnextは気持ち悪いんのでせめてbreakを使いたいと思ったんですが、それだと

になってしまいます。

参考

ruby – How do I return early from a rake task? – Stack Overflow


form_tagを使えばブロック内の全体を返してくれるかと思ったのですが、そうではないらしく最終行だけ返ってきてしまいます。

具体例

つまり

だとフォームそのものと最終行のsubmit_tagだけが表示されてその他の入力フィールドが一切表示されません。

対策

なので以下のように毎行Stringを保存しておきましょう。何でこんな仕様になってるんだろう…?

参考

ruby on rails – How do I use form_tag from within a helper? – Stack Overflow


Railsで既にindexをつけているカラムにunique制限をもうけるには、ユニーク制限だけを付加することができないので一旦インデックス自体を削除してから新規に unique な index を追加します。

参考

ruby on rails – How to add unique constraint to already existing index by migration – Stack Overflow


Rubyの命名規則としてクラス名は通常はCamelCaseで記述しますが、HTTPなどの頭字語(Acronym)はそのまますべて大文字で記述します。

Railsで頭字語のクラス名を使うときはモデル等を生成する前に設定で以下の記述を行っておくと自動的に認識してくれます。

ただhas_manyでこのクラスを持とうとすると以下のエラーになってしまいます。

LoadError: Unable to autoload constant Gnu, expected
/Users/ironsand/dev/myproject/app/models/gnu.rb to define it

対策

クラス名を明示的に指定するとOKです。


RailsでPostgresqlを使うときに毎回そのためのユーザーの作成方法を忘れてしまうのでメモ。

まずユーザーを作成

WindowsでChocolateyを使ってpostgresqlをインストールしてると初期パスワードはPostgres1234になってるので、

これでパスワード無しのdeployerユーザーが必要な権限付きで作成される。

※ Linux系のOSならsudo -u postgres psqlpsqlコマンドを使いましょう。

パスワード無しユーザーでもOKにする

これだけだとfe_sendauth: no password suppliedというエラーが出てしまうので

C:\PostgreSQL\data\pg_hba.confを開いて

に書き換える。

んで管理者権限でコンソールを開いて

net stop postgresql
net start postgresql

Postgresqlのサービスを再起動させる。
残念ながらrestartは存在しない。なんでや。

Rails側の設定

あとはいつもどおりconfig/database.ymlをこんなかんじに設定します。

んで $ rake db:create, $ rake db:migrateでデータベースが作成されるのを確認したらOK!


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

対策

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

gem install libv8 --version 3.11.8.0

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

追記、より良い解決策

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