Ruby on Rails
時間がないので備忘録的に書いていく。http://dev.mysql.com/doc/refman/5.6/en/fulltext-search.html 前提 全文検索には、Natural Language Full-Text SearchesとBoolean Full-Text Searchesがある。 日本語で前者を使うには、分かち書きを別途導入する必要…
Railsとcapybaraで何かをドラッグアンドドロップしてソートするテストを書くではカテゴリをソートするfeaturesなテストを書いたけど、アレには当然modelのテストもある。モデルにはCategory.reorderという並び替えを行うメソッドがあって、これのテストはcat…
今回はカテゴリを画面でソートできることをテストする。たとえばブログで言えばブログカテゴリの表示順を管理画面でソートしたいとき、などの話。 こんな画面で、ドラッグアンドドロップでソート後、更新ボタンを押したら、その順番に更新される、という仕様…
追記)この記事古いので、Rail4.1以上を使う場合は、ActiveRecord::Enum使ったほうがいいと思います。https://github.com/brainspec/enumerize結論からいうと、これはいいです。 例えば職業や性別なんかのDBで管理するほどのもんじゃないものはコレで扱うと…
Redmine2.4をCentOS6.4+MySQL5.5にインストールしようとして、ひさしぶりに以下のエラーをみた。 Mysql2::Error: Index column size too large. The maximum column size is 767 bytes.: CREATE INDEX `wiki_pages_wiki_id_title` ON `wiki_pages` (`wiki_i…
ベースにこれを使う。 https://github.com/holli/auto_strip_attributes gem "auto_strip_attributes", "~> 2.0" で、これだけだと全角スペースには対応してないけど、さいわい好きな処理を挟めるフィルター機能があるのでそれを使う。っていうか、これ使う…
まず最初にJbuilderってJavaのなんかだと思った。富士通とかそういうところが出してるIDEとかなんかそういうの。10万くらいしそうな。で、そうじゃなくてレスポンスをjsonで組み立てるときに使うやつ。 https://github.com/rails/jbuilderWebAPIサーバなんか…
いろいろ紆余曲折したけど、ELBからのリクエストヘッダにはHTTP_X_FORWARDED_FORがついているが、ヘルスチェックにはついてないので、これを利用する。environments/staging or production config.force_ssl = true config.ssl_options = { exclude: proc { …
http://guides.rubyonrails.org/migrations.html と http://dev.mysql.com/doc/refman/5.6/en/fixed-point-types.html と http://gis.stackexchange.com/questions/8650/how-to-measure-the-accuracy-of-latitude-and-longitude/8674#8674文系なんで、用語の…
教えてください。http://api.rubyonrails.org/classes/ActiveModel/Dirty.html ActiveRecordの状態をトラッキングできる便利なモジュール。これを使うと、非公開から公開になったタイミングで公開日を入れる、的な処理がキレイに書ける。 before_save :publi…
やりたいこと 管理アプリもフロントアプリも同じプロジェクト内で共有するのがいいに決まってる。と思ってる とはいえフロントからアクセスされないようにネットワーク設定以外に、アプリ的にも対応しておきたい。 管理アプリは/adminというプレフィクスパス…
ありがたやありがたや・・・http://blog.rono23.org/12 '100' 横幅固定でリサイズ 'x100' 縦幅固定でリサイズ '300x200' 指定した値を最大値としてリサイズ '300x200^' 指定した値を最小値としてリサイズ '300x200>' 指定した値より、大きいときリサイズ '30…
こんな感じのとき class Parent < ActiveRecord::Base has_one :child accepts_nested_attributes_for :child こんな感じでやる params.require(:parent).permit( :name, :name_kana, child_attributes: [ :name, :name_kana, ] ) 福本作品もいいけど、甲斐…
検索フォームの入力値もちゃんとバリデーションかけないと脆弱性のスクツになってしまいます。RailsCastにひとつの答えが載ってた。 http://railscasts.com/episodes/111-advanced-search-form-revised ※有料記事 かんたんにまとめると、検索をひとつのリソ…
erb以外でassets配下の画像を参照するとき、SASSにはimage-pathというナイスなヘルパーがあるのにJSにはない。困る。こういう誰でも困りそうなことは絶対誰かがなんとかしている。なんとかしていた。 http://dennisreimann.de/blog/referencing-rails-assets…
例えば複数画像付き投稿ができる掲示板をイメージしたとき、スレッド→投稿→画像という多段構成のモデルができる。で、となりあう関係のモデル同士は、has_manyとbelongs_toで参照しあえるけど、スレッド→画像や画像→スレッドは一工夫する必要がある。スレッ…
http://stackoverflow.com/questions/12644391/rails-3-web-font-woff-mime-type Rackのmime typeのリストにないからということで、config/initializers/mime_types.rb Rack::Mime::MIME_TYPES['.woff'] = 'application/x-font-woff' これでサーバ再起動で消…
CentOS6.3で発症。パスワードを聞かれて入力したあと、タイムアウトするまでハングする。 https://github.com/capistrano/capistrano/issues/474capistrano-2.15.3/lib/capistrano/recipes/deploy.rb task :cleanup, :except => { :no_release => true } do …
何かの拍子にテストの一部が通らなくなった。コードを追ってみても原因がわからず、そこそこハマった結果、DBにゴミデータが残っていることが原因だとわかった。きっと実行の途中で止めちゃったりしたんだろう。 また同じようなことが起きたら、きっとこれを…
Railsのrspecが遅いので対応した結果wwwwwwwwwwwwwwからしばらくして、やっぱり全体的にテストが遅い・・・!と再認識し、コードを書くのにストレスを感じてきたから本腰入れて調べてみることにした。で、結果がしょぼかったから経緯は省いて…
これは単純にHTMLのマークアップがおかしいだけ。 どうせコピペかなんかしてラベルとテキストフィールドの名前が違っているだけなんだろ?こんな感じに。 <%= f.label :name, t('common.title') %> <%= f.text_field :title, placeholder: t('common.plz_inp…
FactoryGirlに限った話じゃないけど。で、どうするかというとskip_callbackを事前に呼ぶ。 Model.skip_callback(:create, :before, :set_default_status) :set_default_statusは任意のフィルター。 いろいろやってみたけど before_create { self.status = "a…
userモデルとhas_oneの関係にあるpassword_resetというモデルがある。 パスワードリセットのときに使うtokenとタイムスタンプをとっておくためのモデルでuserモデルの一部でもいいんだけど、たまにしか使わない要素は分けたい派なので分けている。具体的には…
Railsのバリデーション機構を使っていると、エラーメッセージの表示がうまくない。 たとえばメールアドレスの入力バリデーションで、必須チェックとフォーマットチェックを以下のように入れたとする。 validates :email, presence: true, format: {with: VAL…
こんなコードがあったんです。 メールアドレス変更をするときに、ユーザーIDと新メールアドレスとトークンを持つモデルのテストで、トークンがかぶったらマズイからbefore_saveでunique_tokenという、渡されたトークンが既に存在しないか確認するメソッドを…
今までrspec + guard + sporkでやってきましたけど、sporkのテストにしか効かないあたりとかはイマイチだなぁ、と思ったので噂のSpringに乗り換えてみることにした。 Gemfile group :development, :test do gem "rspec-rails", "~> 2.13.0" gem "guard-rspec…
rspecで書いているテストが遅い。CPUもめちゃ回る。めちゃ回ってあのスピードか。rspec + guard + spork(spring試したい)で自動テストを回しているので、あまりテストのパフォーマンスが開発に影響することはなかったんだけど、けっこう大きいmodelの修正…
パスワードの変更機能を作ってて パスワードはUserモデルの一部 パスワード変更画面は他の項目(都道府県とかのプロフィール項目)を変更する画面とは別 である場合、新しいパスワード(:password)はプロフィール変更時はバリデーションしたくなくて、ユーザ…
ステージング環境とかで需要があるかもしれない、ぶっちゃけ証明書がオレオレかどうかはあまり関係のない話。 アプリの対応 全体的にSSLにするならconfig/enviroments/あたりにconfig.force_ssl = trueしておけばいいのだけど、action単位でforce_sslしたい…
AWSはアプリケーションマネジメントサービスとして、Elastic BeanstalkとOpsWorksの2つを用意している。どっちがいいのか?の判断基準の参考として公式には以下のページがある。 http://aws.amazon.com/application-management/カンタンに言えば コードさえ…