Rails

rails nginx x-sendfile

rails4.2.0http://wiki.nginx.org/NginxXSendfilex-sendfileは、Railsのみで静的ファイルのアクセスコントロールとかをしたい時に使うといいみたい。 今回は、unicornワーカーが 少ない環境なのでワーカー確保のために使った。 コード controller send_file…

formからの値をArrayでserializeしてるActiveRecordのカラムに設定をする

class User < ActiveRecord::Base serialize :aliases, Array end form_for(@user) do |f| = f.text_field :aliases> User.new(params[:user])serialize Arrayにしているのでセッターには文字列設定するとエラーになっちゃう。 text_fieldヘルパーだと文字列…

postgresqlと複合indexとiowait

rails4.2.0muninを見ているとぺろぺろあんてなのサーバでiowaitが徐々に増えていることに気がついてスロークエリを探しました。 最近https://twitter.com/prprantena に1時間起きで取り込んだ記事を垂れ流すようにしたのでそのネットワークioかと思ったんで…

rails generatorを自作

いつも同じことしているので作ってみた。 https://github.com/jiikko/admin_generator generatorのシンタックスがシンプルなので量産できそう。 $ bundle exec rails g admin_generator:admin install gemfile sorcery exist app/controllers create app/con…

bootstrap3 の navbar-collapse がだらしない問題

twitter-bootstrap-rails (3.2.0) だらしない だらしくない(文字数がぴったりな場合に限る) 余白があるとその隙間に収まってしまう。floatが効いている?レイアウトファイルは、`bundle exec rails g bootstrap:layout application` コマンドで生成している…

レイルズで複数の添付ファイルを1画面でアップロードする

rails(4.2.1), jquery-fileupload-rails (0.4.5)jQuery-File-Uploadを使う。 https://github.com/blueimp/jQuery-File-Upload/wiki/Basic-plugin1投稿に対して複数の添付ファイルをつける画面作る。 $ -> $('#fileupload').fileupload url: '/post_attachmen…

bootstrap3とrails4のproduction環境でアイコンが表示できない問題

自分の本番環境で起きていたのは、cssからのリクエストでfontファイルにダイジェストがついていなくて404になっていた。 なおfontの4ファイルはprecompileできてた。asset_pathヘルパー使ってダイジェストつけるようにした。 # app/assets/stylesheets/boots…

ログが重複している

Started GET "/" for 127.0.0.1 at 2015-05-24 11:27:10 +0900 Started GET "/" for 127.0.0.1 at 2015-05-24 11:27:10 +0900 Processing by TopController#index as HTML Processing by TopController#index as HTML Report Load (0.5ms) SELECT "reports".…

リクエストのフォーマットとジャバスクリプトのcallback

ajaxでもcreateアクション使いたいと思ってaction内で分岐してる。その分岐に hxr? ではなくてrespond_toメソッドに変更したら盛大にハマった。 def create if request.xhr? # json返す else # html返す end end ↓ def create respond_to do |format| format…

link_toの第一引数にタグを入れる

module AppHelper def icon(name) "<i class='icon-#{name}'></i>".html_safe end end # view <%= link_to "#{icon(:home)}家のリンク", "/home" %> iconヘルパーでhtml_safeしているのだけどlink_toで実行される頃には、別の文字列インスタントになっているのでタグがサニタイズされて表…

nested_form と ajax

nested_formは、記事に対するカテゴリを複数登録できる画面、みたいなところで使うと便利なgem。 デフォな使い方だとテキストフィールドを増やしたり減らしたりがすぐできるんだけど、 今回はajaxでリンク一覧を取得して、返ってきたリンクをクリックして子…

rails4.2にあげたらrackのバージョンもあがった

rack1.5であれば http://localhost:3333/echo?foo=bar&alpha=beta http://localhost:3333/echo?foo=bar;alpha=betaというリクエストがきた場合、両方{"foo"=>"bar", "alpha"=>"beta"}.で受け取れていたんだけど、 rack1.6から、パラメータの区切り文字が"&"…

HABTM で使う中間テーブル名と crate_join_table

Rails4.1.4 あたり class CreateJoinTableTodoPost < ActiveRecord::Migration def change create_join_table :user_posts, user_todos do |t| end end end をmigrateすると user_posts_user_todos というテーブルが作られる。 でもhas_and_belongs_to_many …

vue.js触る1

rails4 ,vue.js(0.11.4), slimこういうことやりたい。 <div id="form" v-repeat='user_list'> <p> <input type="text" v-model="point"> <p v-text="point"></p> <p v-text="name"></a> </p> </div> <script> (function() { var vm = new Vue({ el: '#form', data: { user_list: [ { name: 'レジャスポ', point: 1 }, { name: 'やまだ', point:…

キャッシュ

ちょっと前にsinatra VS rails ってスライドが見て、Railsが遅いのはGCが多いからって書いてた気がする。 フラグメントキャッシュってデータベースへのアクセスを抑えるために使うっていう印象が強かったんだけど、CPUコスト抑えるために他の場所でも使って…

gemつくった

https://github.com/jiikko/huwahuwa_state作ったのは状態遷移をサポートするgem。 ActiveRecord::Enumの上に乗っているのでhuwahuwa_state本体のコードは少ない。また、学習コスト(?)が低い気がする。アプリに乗るテストコード減るので外だしできるものはge…

最近のプログラミングの所感

メンテナブルなアプリって、modelsディレクトリ配下にあるクラスにメソッド定義が少ないかつミックスインが少ない感じがする。 クラスへ抽出(コンポジションって言うらしい)ができていたり、いい感じに関連使ってるとインスタンスメソッドあんま書く必要がな…

to_param

http://locahost/users/1/working_days/1/activities/newlink_toにARインスタンスを渡すとこういうURLを組み立ててくれる。たまにめんどいけど概ね便利。この機能、デフォで引数になってるARインスタンスのidを使って組み立てられるんだけど、idの代わりに日…

ジャバスクリプトは難しい

ネストされたフォームをジャバスクリプトで隣カラムにある一覧から追加したり削除したり、削除したのを戻したりする画面を作りたい、というのがあって、 ライブラリを使わないで最初考えてた設計方針だとたぶんできるんだけど、項目名要素に対して値のゲット…

find_each

バッチ処理する時はメモリを使い切らないように、#eachじゃなく#find_eachを使うと思う。 そのバッチ処理をローカルとかサーバ上で件数を絞ってテストをしたい時は、#limitを使うことがあると思う。 User.limit(10).find_each do |user| ...... でも、これだ…

ActiveRecord::Enumを使って状態遷移するやつを自作した話

RailsにはAASMというモリモリした状態遷移ライブラリがあるみたいなんだけど、 ActiveRecord::Enum(4.1から)と一部被ってるし多機能すぎる印象があったので作ってみた。 自分の欲しかった機能 ある状態の時に遷移する時は、特定の状態からでしか遷移できない…

ActiveRecord::Enumを使って状態遷移するやつを自作した話2

gem化しました!!! https://github.com/jiikko/huwahuwa_stateActiveRecord::Enumを使って状態遷移するやつを自作した話moduleに切出したら汚物が目に入りにくくなっててよくなった。でもARべったりなのでテストめんどくて最悪。 module AiState extend Ac…

親子モデル同時更新でバリデーションエラーになった時、順序を持つ子モデルの並び順をなんとかしたい

rails4順序を持つ子モデル(猫クラス)はpositionカラムが持っていて、親モデル(人間クラス)には次みたいなに関連が定義されると思う。 class Human < ActiveRecord::Base has_many :cats, -> { order(:position) } accepts_nested_attributes_for :cats end D…

thinreportsでテーブルオブジェクトのpage_footerにあるテキストブロックに値を直接埋め込む

thinreportsとは 環境 thinreports (0.7.7) ぃみゎかんなぃ。。。。 もぅマヂ無理。。 アイテム一覧を作る必要があったので、 thinreportsエディターからテーブルオブジェクトを配置して、ページフッターにrubyで加工した文字を表示しようとすると、 下記みた…

名前付けする時にやること

直訳する http://www.alc.co.jp/ 直訳すると連想しにくい意味不明な名前になりやすい。その時は気づかなくても後になって意味不明な名前をつけたことに気づいて悶絶することが多い。 Githubにあるコードから調べる 選択中の要素のclassにactiveという文字を…

テンプレートエンジンをslimにしてよかったこと

インデントちゃんとしてください、とデザイナに言う必要がなくなったこと。

1つのテンプレートでしか使わないジャバスクリプト

特定のテンプレートでしか使わないジャバスクリプトの置き場所について。 「テンプレートに書く」のと、「assets/javaasctips以下に書く」どちらがいいんだろう?使わないjsを毎回配信しなくていいからテンプレートに書いておくはメリットがあると思ったが、…

設定ファイル

rails newする時よくつけるオプションを設定ファイルに書いておくと便利らしい。 # cat ~/.railsrc -T --skip-bundleこのくらいタイプしろボケという感じがないわけでもない。

deviseでユーザ新規登録させない

devise (3.2.4)ユーザレコードはseedとかから取り込むので、利用者には新規登録させないみたいなケース. controller app/controllers/registrations_controller.rb class RegistrationsController < Devise::RegistrationsController def new redirect_to '/…

seach_formオブジェクトのテスト

検索項目が多い検索フォームを実装する時は、form_forヘルパーとActiveModel::ModelをMixinしたオブジェクトを使ってると思う。 (こういうやつ→http://kazuph.hateblo.jp/entry/2012/10/06/222831) その検索フォームで使ってるオブジェクトのテストを書いて…