ゆうなんとかさんの雑記帳的な。

Twitterで踊ったり音ゲーしたりしてるあの名前がよくわからない人が書いてるらしいよ。

Rails

Capistranoで快適デプロイ生活したかった

なぜできないのか Capistranoで先日の環境にデプロイを自動化しようとしたところうまく行ってないお話です。 Capistranoでデプロイするとこうなる ひとまずCapistranoをセットアップして、 cap production deploy と打ち込むと、だいたい次の4つのことが起き…

部分的なテンプレートでブロックを使いたかった

とりあえず要所をまとめると テンプレートを作ってヘルパーメソッドの中でrender partial: 'path/to/template', locals: { param: scan(&block) } です。 なんでこうしようと思ったのか レイアウトのように大規模ではないものの、よく出てくるような枠部分を…

Railsのエラーメッセージを超強化するbetter_errors

Gemを追加するだけで素っ気ないあのエラー画面が超クールで高機能になります。 こんな感じに。 スタックトレースが見やすくなり、エラーが起きた周辺のコードがシンタックスハイライト付きで表示されます。 さらに、リクエストパラメータやセッションの値は…

名前空間があるモデルにhas_manyとかやりたい時ってたまにあるけどこうするといいらしい

おとなしく同じ名前空間にモデルがあるとは限りません。たとえば、AwesomeLibrary::AwesomeModelという名前のモデルがあってそこと1:Nの関係を持たせたいとしましょう。 普通は has_many :awesome_models とかやるところですが、この場合はAwesomeModelを探…

Railsのdatetime_selectってなんとかならないかなって思ってあれこれ試してた

この手の記事を書くのは久しぶりですね。Bootstrap3に乗り換えると困ったのがdatetime_selectやdate_selectで生成した日付の入力欄。 Bootstrap3はフォームの入力欄のサイズをその外側にあるタグで設定するので厄介者です。 <div class="col-lg-4"> <input type="text" class="form-control"> </div> まあこんな感じです。ところが…

ついにE2Eテストが書けるようになったんだけど、道のりが長過ぎた

るびまや先人たちのブログを参考に、Turnipなどを使ってエンドツーエンドテスト(E2Eテスト)を書く環境を整えました。 Turnipってなに? これです。 というのは冗談で、冒頭にあげた通りE2Eテストを自動化するツールです。ちなみにこの手のライブラリの先輩で…

楽したいんですよ、綺麗にコードかけるし、書かなくていいかもしれないですし

昨日はもう出歩きたくないようなひどい雨風でしたが、今日は打って変わっていい天気です。涼しくなってきて夏も終わりが近いと感じます。 さて、今回は「多対多の関連を持つデータをRailsでうまく保存したく」なりました。 データを表示する段階の問題 newや…

なんかスタイルシートのある色をデータベースに保存しておいて、管理者が自由に色を変えられるようにしたいよね、みたいな話があったので

Railsだと「アセットパイプライン」なるものでやれるそうです。 今までお手伝いしてきたアプリでは、何の気無しにJavaScriptをCoffeeScriptで、CSSをSCSSで書いてきたのですが、どうやらこれもアセットパイプラインを暗に使っていたようです。 今回はSCSSの…

404ページ、500ページのつくりかた

いくつかやりかたがあります。 1. 静的ファイルで十分な場合 public/404.html、public/500.htmlというファイルを置くだけです。ね、かんたんでしょ? 2. レイアウトを使いまわしたい場合 まずはconfig/routes.rbを修正します。 MyApplication::Application.r…

Expected /home/xxxx/project/app/foo/bar.rb to define Barみたいなエラーが出た

そうさ…意味なんかない。"上"のヤツらは裕福な生活を送りながら、くだらない思想をぶつけあって、戦闘に明け暮れている。俺達は、そのしわ寄せでこんな生活を……強いられているんだッ!(集中線) 強いられているんだ!とは (シイラレテイルンダとは) [単語記…

いや、べつにTwitterの真似事がしたいわけではないんですけれど

今度は「ログインするときにTwitterみたいにユーザー名とメールアドレス両方受け付けたいよね」みたいな話が持ち上がったので対応してみたいと思います。 ちょうどDeviseのWikiにやりかたが載っていたので、この通りやってみたいと思います。 大体の流れは、…

RailsにRackアプリケーションをマウントしてみた

思ったよりも簡単です。やることをざっくり言うと、 Railsにパスを通す ルートにマウント の2つだけです。 Railsにパスを通す たとえばapp/api/以下にSinatraとかGrapeとかを置いておきたいとしましょう。そうしたら、config/application.rbに config.paths.…

RailsでOAuthプロバイダーを作れるプラグインを見つけたけどそのままだとうまく動かなかった件について

ちょっとわけあって調査することになり、試しに動かしてみようと思ったらとんでもない泥沼でした。 ちなみにプラグインのリポジトリはこちらです。 pelle/oauth-plugin · GitHub oauth2のGemがインストールされていれば、例によってGemfileに gem 'oauth-plu…

これイマイチDRYじゃないなーと思ったら

DRYとは アルファベットをひと文字ずつ、または英単語のdryと同じ読み方をしますが、「乾かせ」ではなく、「Don't Repeat Yourself」の頭文字です。早い話が「重複を避けよ」ということで、データやプログラムに重複箇所があると、そこに修正をかけたいとき…

Railsで直接SQLを実行していい感じに値を得る

ActiveRecordでSQLのクエリーを構築していくのは手軽でいいのですが、ちょっと特殊なことをしたいときはなかなかそれだけでは難しいかできない、ということがまれによくあります。 私もここ数日あれこれ試行錯誤した結果諦めたものがあります。どんなものか…

Railsでソートする

RailsというよりかはActiveRecordの話かもしれませんが。今回もちょっとハマったのでメモです。 基本 ひとつのテーブル内でソートを完結させる場合は特に難しいことはありません。 Model.order("column_name asc") これでテーブルmodelsにあるレコードすべて…

Railsのルーティングについてちょっとしらべていた

わけあって /hoge/:hoge_id/:fugasみたいな感じのルーティングをやりたかったので、ちょっと調べていました。 基本のルーティング まず何も設定しなかった場合のルーティングです。この場合はいたってシンプル。 /:controller(/:action(/:id(.:format)))とい…

Railsのアプリでログインできない、IDとパスワードはあってるのに。

Railsで動いているアプリでなぜかログインができない。教えてもらったIDとパスワードを何度打ち込んでもログイン画面にリダイレクトされます。 POSTしたときのログを漁ってみると、 Started POST "/login/auth" for 127.0.0.1 at 2013-04-03 20:58:22 +0900 …