一分一秒真剣勝負!

Ruby, Railsなど。Web系の技術ネタを充実させたい・・が、そうなるかは分からない。

rails

Elasticsearch2.3.3から5.4.3への移行作業

去年からElasticsearchをいじってたんだけど、全くブログなどに書いてなかったので書いてみる。 ツッコミとか大歓迎です。 あらすじ HerokuのAdd-onsでElastic Cloudを使っているのですが、ある日、Elasticsearch 2.3 のサポート期限終了のお知らせが届きま…

Qiitaに「あなたはDRY原則を誤認している?」を投稿しました

Ruby on Rails の普及とともに広まった感のある「DRY原則」を多くの人は間違って認知している。 頼むから間違えないでくれという願いが込められた、最近流行りのエンジニアポエムです。 qiita.com

Railsの開発用サーバをPowからPuma-devへ乗り換えた

Rails5からデフォルトRackサーバがPumaになりました。開発用のサーバとして自分はずっとPowを使っていましたが、Pumaを使っているのであればPowではなくpuma-devが主流になっていると知って調べてみたところ、PowからPuma-devへの乗り換えを即決しました。 …

ActiveRecordで引数があるscopeはクラスメソッドで定義しろ!

ActiveRecordで引数があるscopeはクラスメソッドで定義するべき。 その理由とは?

Rails俺は気づかなかったシリーズ「改行コードをHTMLタグに置換」

文字列の改行コードをタグに置換したい!とかよくある事だったので、毎回helperに#brとかメソッドを定義していたけど、simple_formatというヘルパが既に定義されていた。 my_text = "Here is some basic text...\n...with a line break." simple_format(my_t…

RailsでCustom FormBuilderのテストってみんなどう書いているんだろう

Custom FormBuilderでRSpecをどう書くかについて

Ginza.rb 第8回 Gemfileみせっこ!みんなどんなの使ってます?に先月行ってきた

2月に参加したGinza.rb第8回目についてのエントリー。 書いたのはいいけど、POSTし忘れてました。 というわけでGinza.rbで紹介したgemと紹介し切れなかったgemをまとめました。 全部ではないですが、これってものをピックアップしてます。 Ginza.rbで紹介し…

Railsのエラーハンドリング

Rails3.2から結構いい感じになったエラーハンドリング Railsは1.xからやっているけど、気に喰わないのがエラーハンドリング周りだった。 特にRoutingエラーを補足する為に各バージョンごとに対応が微妙に違ったりして、毎回調べたりRailsの実装を追っていた…

Capistrano3が良さげ

CapistranoのVersion3がリリースされてますね。変更点は以下のサイトに大量に書かれています。 Capistrano Version 3 ReleaseAnnounceme変更点が多過ぎて全部まとまるのは諦めたので、個人的にこれはいいなーと思った点を上げます。 良かった変更点 マルチス…

Rails4にアップデートした

Rails4にアップデートする情報は十分にあるので、あえて書くことは無いんですが、今やってるプロジェクトでRails3.2.14からRails4に上げた時のメモ。基本的にRails3のうちにstrong_parametersさえ対応しておけば大したことはないというのが感想。 問題は使っ…

undefined method `mtime' for nil:NilClass(i18n-js)

RailsでJavaScriptの国際化をするライブラリは今のところi18n-jsが有名です。 暫く使っていなかったのだけど、久しぶりに使う機会がきたのでgithubを見てみたら便利になってた。なんとassetsを有効にしている環境なら以下の2行を追加するだけで動いてくれる…

Rails + Sass + Compass環境でTwitterBootstrapのvariablesを変更する

【注意】この情報古いっす。bootstrap-sassのgithub見てください。もっと簡単にできます。bootstrapの公式サイトには Customize variablesというページがあって、これを変更する事によって色などを変更したbootstrapをダウンロードできます。これをRailsで変…

ActiveResourceでバリデーションのエラーメッセージを送信する方法

よく見るサンプルコードみたく以下のように書くとダメ。 if @hoge.save format.json { render :json => @hoge, :status => :ok } else format.json { render :json => @hoge.errors, :status => :unprocessable_entity } end エラーを返す時はハッシュで:err…

rvmからrbenvへ移行

実装がコロコロ変わったりしてupdateしたら動かなくなったりするとか叩かれているrvmですが、実際僕も同じ現象に遭遇した事があり、rubyのバージョン管理をrbenvに移行することにしました。37signalsの中の人が作っているので、まあ普及するかなと。OSはLion…

Ruby on Railsの情報源まとめ

個人的にRails関連でよく見るサイトをまとめてみた。殆ど英語でしか書いてないサイトばっかりですね。 Ruby on Rails Guides - http://guides.rubyonrails.org/ 公式サイトのRailsチュートリアル。初心者向けを前提にしているようですが、Railsでどう書いた…

HerokuでRails3.1+sqlite3アプリをデプロイする!

GitのリポジトリをpushするだけでデプロイまでしてくれるHerokuでRialsアプリをデプロイしてみました!友人の居酒屋サイトを作成中なんですが、凄い便利ですねHeroku。以下はherokuを使う時のまとめ。ちなみにRails3.1でデプロイしたものの、実装はほぼ3.0.9…

Rails3レシピブック 190の技

Rails3レシピブック 190の技作者: 高橋征義,松田明,諸橋恭介出版社/メーカー: ソフトバンククリエイティブ発売日: 2011/07/25メディア: 単行本購入: 32人 クリック: 909回この商品を含むブログ (37件) を見る 買いました!前作は立ち読み程度にパラパラとし…

Factory Girlの新しいシンタックスが素敵

キタコレ。 旧シンタックスがこれ。なんだか残念な感じですね。 Factory.sequence :email do |n| "email#{n}@example.com" end Factory.define :user do |factory| factory.name { "Ron Burgundy" } factory.email { Factory.next(:email) } end Factory.def…

rakeタスクでurl_helperを使うには

なんかrakeタスクでurl_helper使えねーなーと、思ってたんだけどモジュールをincludeしてからdefault_url_options[:host]にホスト名を設定してやれば動くことが分かった。 include Rails.application.routes.url_helpers default_url_options[:host] = "d.ha…

collection_selectに:selectedオプションが欲しいが、Rails3にも無いっぽい

やっと仕事でRails3を使い始めたので、collection_selectに:selectedオプションが動くようになってるかなーと思ったんだけど、ダメでした。なので今まで通りselectで以下のように書いいてます。 <% form_for @user do |f| %> <% f.select(:item_id, Item.all…

Ruby on Rails + Passenger + Oracle で動かそうとしたらエラー発生

Passengerで動かそうとするとエラーが発生する。もっとスマートなやり方があるかもしれないんだけど、僕のやり方をまとめます。 実行環境 OS CentOS 5.4 Shell bash Oracle関連ソフト 無償のパッケージのみを使用する 接続先DBサーバ 自サーバ以外で稼働して…

Ruby on RailsでOracleにtnsnames.oraを使用して接続する

tnsnames.oraを使わないで接続する方法の反対で、tnsnames.oraを使って外部DBサーバに接続する方法。インスタントクライアントを使用するのでタダ。 実行環境 OS CentOS 5.4 Shell bash Oracle関連ソフト 無償のパッケージのみを使用する 接続先DBサーバ 自…

Railsの(will_paginate || active_record)で自己外部結合

メモメモ。もっとスマートな方法無いかな。 paginate(:select => "#{table_name}.name, A.name", :conditions => [where, values], :joins => "LEFT OUTER JOIN user A ON A.sub_id = #{table_name}.real_id", :per_page => 10, :page => params[:page])

Ruby on RailsでOracleにtnsnames.oraを使わずに接続する

RoR+Oracle・・・あまり無いパターンなので、情報が少ない。なのでメモっておくことにしました。 実行環境 OS CentOS 5.4 Shell bash Oracle関連ソフト 無償のパッケージのみを使用する 接続先DBサーバ 自サーバ以外で稼働している インストール済み Ruby, R…

marshal data too short

Railsで作成中のサイトの話。動作確認のためにPOSTしたら「marshal data too short」というエラーが発生。ぐぐってもtDiaryのエラーばかり出てきて暫く悩んでいたのですが、sessionにでかすぎるデータを入れていたのが原因でした。設計上そうなっていたので…

will_paginate

Rails2.xになったら、ページングは外部プラグインを使うのか・・・また覚えるようだ。と、思っていたのだけど凄い簡単で笑った。will_paginateの評判が良いみたいなので入れてみたら便利便利。 インストール手順 # gem install will_paginate config/environ…

データベースからフィクスチャを作成するRailsプラグイン

rakeにfixtureからDBにデータをロードするタスクがあるのに、その逆が標準で無いってどうよ。ar_fixturesプラグインはそれを可能にしてくれる。まずはインストール。 $ script/plugin install http://topfunky.net/svn/plugins/ar_fixtures 使い方は以下のよ…

fields_forで1対多の関係にあるモデルの内容を表示する

追記 このコード古いです。最近のRailsを使っているならhttp://api.rubyonrails.org/でfields_forを調べてください。英語だけどサンプルコードが豊富にあります。 fields_forでググると、モデルが1対1の関係のサンプルばかりがヒットする。1対多の場合はどう…

railsのリソースルートに複数形の英単語を書くと、単数形の名前付きルートも自動生成してくれる

タイトルの通りなんだけど、例えばroutes.rbに以下のようにpeopleと記述して、ルートを確認すると・・・。 map.resources :people # routes.rbに記述$ rake routes people GET /people {:action=>"index", :controller=>"people"} formatted_people GET /peo…

Railsでscript/consoleを実行するとエラー

こんなエラーが出た。 $ ruby script/console Loading development environment (Rails 2.2.2) /usr/local/lib/ruby/1.8/irb/completion.rb:10:in `require': no such file to load -- readline (LoadError) from /usr/local/lib/ruby/1.8/irb/completion.rb…