Ruby on Rails

RedisインストールからRecommendifyの動作確認まで

ひさびさ、1年ぶりのプログラミング記事です。Redisを使ったレコメンドエンジン「Recommendify」の動作確認をします。 参考:Recommendifyで気軽にレコメンドエンジンに触れてみるAdd Starredis本体のインストール sudo port -d sync sudo port install red…

Mac使いがRuby1.9とRails3のプロジェクトに参戦したときの話

久しぶりのプログラミング仕事で、Railsを触っている。 以前のプロジェクトでRails3には慣れたけど、手元のRubyはバージョン1.8.7のままだった。 今回は1.9.3を使うっていうことなので、環境の整備をした次第。新しいrubyをインストールしてみる、、、成功。…

Rails3をはじめてすぐに勉強したことリスト

MacBook Air 11インチ欲しい!いとうまさしです。 - プロジェクト作るときは $ rails new プロジェクト名コントローラー作るときは $ rails g controller コントローラー名モデル作るときは $ rails g model モデル名 「フィールド名:型」の繰り返し例えば $…

Mac+RVM+Ruby1.9.2+Rails3の環境作り

RVM(Ruby Version Manager)のインストール $ bash curl http://rvm.beginrescueend.com/releases/rvm-install-head ) .bash_profileの末尾に以下を追記 [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # This loads RVM into a shell ses…

background_fuで「あとでやる」処理を書く

railsを使って「あとでやる」処理を実現する方法について rubyのMLに回答をしてみたので、内容をここにも書いておきます。 質問メールは以下の通り。 RubyもRailsも初心者なのですが、 現在、Railsで簡単なtwitterのbotを作成しています。 Railsで作った設定…

buildって何だろう?

ActiveRecordのアソシエーションを扱うメソッドで「build」というのを初めて知りました。 class Group ActiveRecord::Base has_many :users end class User ActiveRecord::Base belongs_to :group end というアソシエーションがあったときに、 @group.users.…

ActionViewとActionControllerでurl_forの挙動が違います

URLを出力するためにつかう「url_for」というメソッドがあります。 root_path, root_url, XXXX_path, XXXX_urlなどroutes.rbで定義したURLを呼び出すメソッドでも内部的に使っています。このurl_forやXXXX_urlですが、Controllerの中で呼ぶときとViewの中で…

file_columnで受信メールの添付画像を保存する方法

前提 Statusモデルにimageというフィールドがあって、そこがfile_columnを採用している。 メールを受信したら添付ファイルをstatus.imageに格納したい。 (1)file_columnの一部を拡張します。 vendor/plugins/file_column/lib/file_compat.rb を以下のよう…

QRコードを画像で書き出す

rmagickがインストール済みを前提。 $ gem list | grep rmagick rmagick (2.12.2) QRコードのもとになる配列を作ってくれるgemを入れる。 gem install rqrcode QRコードの配列を画像にしてくれるモジュールを入れる。 git clone git://github.com/hal99/qrim…

githubからpluginをインストールする方法

例えば jpmobile を入れる場合は ruby script/plugin install git://github.com/darashi/jpmobile.git 以上。

acts_as_taggable_on_steroidsの使い方

インストールする(githubに引っ越してるから注意) ruby script/plugin install git://github.com/jviney/acts_as_taggable_on_steroids.git ruby script/generate acts_as_taggable_migration rake db:migrate Manualモデルというのをtaggableにするとして…

テーブルから「最後のレコード」を取得する

ActiveRecordで「first」があるのは知ってたけど「last」があるのは知らなかった。 「モデル名.first :order => 'id DESC'」みたいに書いてた。 「モデル名.last」でいけるっぽい。こう書くだけで動けばいいのに!と試してみると、大抵動く。やはりRailsはす…

View以外の場所でヘルパーをつかう方法

ActionController::Helpersのhelpers()を使います。 # ruby script/console >> ApplicationController.helpers.simple_format "aaa" => "<p>aaa</p>"という感じ。

Rails2系でメールの日本語化

運営中のサービスでユーザーさんから「メールのタイトルが文字化けしてるヨ!」という連絡がありました。 そういえばメールの文字化け対策は何もしてないので、Outlookとかでは文字化けするだろうなー。 ということで対策してみました。2時間くらいかかるか…

テキスト内のURLをリンクにしたり、エスケープしたり。

Railsのヘルパーを使って、 HTMLエスケープ 改行をBRタグに変換 URLをリンクにする URLが長かったら後ろを「...」で省略する リンクは別ウィンドウで開くようにする という処理を書くと以下の通り。 auto_link(simple_format(h(status.message)), :all, :tar…

restful-authenticationの自動ログインの期限を延長する方法

ログインフォームで「次回から入力を省略する」にチェックするとログインしっぱなしになる、 という機能はよくあります。railsのrestful-authenticationにも「remember_me」という名前で実装されています。 但し、この機能「30日間限定」で実装されている…

Rails2.2.2でアプリを日本語化(i18n_generators, i18n_label)

Rails2.2.2で作ったアプリのエラーメッセージやlabelメソッドの出力を日本語化したかったので下記の手順で実行してみた。(1)翻訳ファイル(config/locales/*)を自動生成してくれるgeneratorをインストール sudo gem install amatsuda-i18n_generators cd R…

Rails2系アプリの管理機能を10分で作る方法

Rails 2.2.2で作ったWEBアプリの管理サイトを/admin/で始まるURLで作る手順をまとめました。 例えば「カテゴリー」(Category name:string position:integer)というモデルがあって、 そのマスターデータを管理したいという前提で。 (1)scaffoldをgenerate…

RedHat EL4にRedmineをインストール

RedHat EL4にRedmineをインストールする、というお仕事をしたので、作業ログを公開。 各種ライブラリはrpmで入れて、rubyやらgemやらはソースからビルドした。(1)Railsの実行で必要になるライブラリを入れる su wget ftp://mirror.switch.ch/pool/3/mirro…

さくらの専用サーバ(CentOS)にRailsの実行環境を作る

表題の件、手順をメモ。(1)各種インストール su yum install emacs yum install ruby yum install rubygems gem install rails -v=2.3.2 gem install passenger gem install ruby-devel gem install httpd-devel passenger-install-apache2-module (2)…

ActiveRecordのupdated_at、created_atを自動更新しない方法

railsのモデル(ActiveRecord)にはtimestamps(updated_atとcreated_at)というフィールドがあって、更新日時、生成日時が勝手に記録されて便利ですね。 でも特定のタイミングでこの自動更新(特にupdated_at)を止めたい場合があります。そんな時にはActiveR…

migrationの新機能(redo, rollback)

実はそんなに新しい機能じゃないっぽいけど、最近知ったのでメモ 最近適用したmigrationを元に戻す(downを実行してくれる) rake db:rollback 最新のmigrationを適用し直し(downとupをしてくれる) rake db:migrate:redo これまではmigrationのdownの部分…

自動生成したrspecのコードが失敗するときのメモ

rspecの低い( (1)route_forのパラメータは数字(integer)じゃなくて文字列(string)にする○ route_for(:controller => "comments", :action => "index", :entry_id => "1").should == "/entries/1/comments" × route_for(:controller => "comments", :…

rspec_nested_scaffoldでネストした構造のscaffoldが一発生成

例えばブログ記事(Entry)の下にコメント(Comment)が複数ぶらさがっているとしますよね。 そいつを操作するプログラムを作る場合、routes.rbの指定は map.resources :entrys do |entry| entry.resources :comments end とか指定するわけですよね。 でURLは「/…

ActiveRecordのhas_manyに:uniqを指定して重複を削除

ActiveRecordのhas_manyに:uniqを指定したときの動作を確認してみた。 グループの下に複数のユーザーがぶら下がっているテーブル構成を考える。 class Group ActiveRecord::Base has_many :users, :uniq => true end class User ActiveRecord::Base belongs_…

restful-authentication + aasm + forgot_passwordでWebアプリの骨を作る

今日は 『railsを使ってWebアプリを作ろう、という時、まずは何から作り始めますか? まずユーザ登録周りのところまではほぼ自動で作ってしまいましょうか。』 という趣旨のエントリーです。手順は下記2つのURLを参考というか、コピペさせてもらいました。 …