Ruby, Ruby on Rails 3 Tips

Rails 3.2では、javascriptやstylesheetはassetにまとめられます。 ここにまとめられたものは 例えばstylesheetであれば自動的に「コントローラ名.css.scss」がcssコンパイルされ、 リンクされます。自分で指定する場合は <%= stylesheet_link_tag "users" %> とすればリンク出来ます。 さて、Rails3.2では、stylesheetはscssが、JavaScriptはCoffeScriptがそれぞれ 標準で使 ...

Ruby, Ruby on Rails メモ

Rubyで「&amp;」などの文字参照をデコードするには CGI.unescapeHTML('test&amp;リリース') とすると test&リリース という感じで変換してくれる。

Ruby, Ruby on Rails 3 Tips, Ruby on Rails 3 プラグイン

Ruby on RailsからSolrを使うには、このプラグインを使うと良さそうだ sunspot_rails ホームページは sunspotプロジェクトの一部になっています。 インストールは Ruby on Rails 3の場合 gemfileに gem 'sunspot_rails' gem 'sunspot_solr' # optional pre-packaged Solr distribution for use in development を追加 あとは bundle instal ...

Ruby on Rails メモ

セッションIDを得るには session.session_id とする。

Ruby, ubuntu

Ubuntuにrubyの環境をインストールするのに、 パッケージとかで入れると、どうも古いバージョンであったり 複数バージョンを入れて試したりしたい場合がある。 そんな時にはrvmを入れることで、Rubyの複数のバージョンを入れて切り替えたりすることが出来る。 ということで、まずはインストール rvmの本家(から インストール方法を確認 rvmのstableをダウンロード $> bash -s stable < <(curl -s rvm のパス情報を設定 以下は、アカウント内 ...

Ruby, Ruby on Rails メモ

remote_tableはリモート(またはローカル)にあるExcel、CSVファイルなどを読み込んでシステムで扱えるようにするRubyライブラリです。 rubygemsでインストールします。  

Ruby on Rails メモ

Controller内でHelperに定義したメソッドを使うには ApplicationController.helpers.my_method(text) という感じで書けば使用できる

Ruby on Rails メモ

rspecでUserAgentのテストをする場合の、テストデータの設定 request.stub!(:user_agent).and_return('FeedBurner/1.0') get 'search' とする

Ruby on Rails 3 Tips, Ruby on Rails メモ

バッチ処理として書いたrbファイルをテストする場合 テストケース内で system("ruby バッチファイル") としても良いが たとえばTimecopで日付を固定してテストする場合には具合が良くない。 バッチのプロセスが別プロセスで動くため、Timecopの設定がバッチに反映されない。 なので systemで呼び出している部分を load "バッチファイル" というように、loadに変えると、そのバッチ処理が都度ロードされるので テストを実行しているプ ...

Ruby on Rails 3 プラグイン

日時によって表示項目を制御したりする場合に、よくDate.todayとかDateTime.nowとかを使ったりすると思うが このシステム日時を取得している場所のテストをうまく実行したい場合に役に立つプラグインが Timecop です。 ようは、Date.todayとかで返ってくる日時を固定してしまうというプラグイン。 インストールは Rails2.*系であれば、config/environments/test.rbあたりに config.gem 'timecop', :version => ...

Ruby on Rails メモ

RailsのActiveRecordは、updated_atとcreated_atカラムがある場合、created_atには新規作成時、updated_atは新規と更新時に自動で日付が設定されます。 普段はこの動きで便利なんですが テストをする時などにupdated_atを操作したりしたい。 そんなときは以下のように書けばupdated_atに自動で日付が設定されるのを防ぐ事が出来る。 ActiveRecord::Base.record_timestamps = false record.sav ...

Ruby on Rails メモ, web

Railsでsend_fileというメソッドがある これは、ファイルなどをそのまま返す場合に使ったりするが これを使うとRailsのメモリ使用量が増加していく。 2.1でこの現象が出るが 2.3とかもかも? なんかメモリを解放してないっぽい感じですが、これに関しては、ほかの方が調べてたりするので深く調べないことにする。 で、解決方法は、x_sendfileを使うのがスマートな気がするので、これを採用する。 導入手順 apacheにmod_xsendfileを組み込む wget sudo apxs ...

Ruby on Rails 3 Tips, Ruby on Rails メモ

Railsで日付処理は、意外と簡単に出来たりする。 1日前 1.days.ago 1日後 1.days.from_now 1ヶ月前 1.months.ago 1ヶ月後 1.months.from_now 1年前 1.years.ago 1年後 1.years.from_now また、本日の開始日時として、たとえば 2011-10-01 00:00:00 という情報を取りたい場合 Date.today.beginning_of_day 逆に 2011-10-01 23:59:59 という情報を取り ...

Ruby on Rails メモ

redmineにはwikiがついてます。 基本Textile形式で記述する物なので 表を作るときは |名前|年齢|趣味| |太郎|23|ギター| という感じで書きます。 が、たとえば趣味が複数あって、途中で改行させたいといった場合に、<br/>タグとかが使えません。 これは、redmineが採用しているライブラリ「redcloth3」の中でbrを許可しないようになっているからです。 どうしても表の中で改行を使いたい場合、この「redcloth3」ライブラリを変更する必要があります。 ...

Ruby on Rails メモ

モジュールがインクルードされているか it "should include AuthenticatedSystem" do   controller.class.included_modules.should include(AuthenticatedSystem) end 隠したいパラメータがフィルターされているか it "should filter credit_cards" do   controller.send(:filter_parameters, 'credit_card' = ...

Ruby on Rails メモ

usersテーブル hobbysテーブル があり、 usersテーブルの方に has_many :hobbys hobbysテーブルの方に belongs_to :user が指定されているときに user.hobbys.collect{|c| c.id} とすれば、hobbysのID一覧が得られる が、 user.hobby_ids とすれば、idの一覧を簡単に得られる

Ruby on Rails メモ

このワーニング 「warning: peer certificate won’t be verified in this SSL session」 は、Net::HTTPライブラリを使用してSSLなページを取得したときに出力される これを止めるには Net::HTTPを使用するときに「verify_mode」を設定する require 'net/https' https = Net::HTTP.new("gendosu.jp", 443) https.use_ssl = true https.v ...

Ruby on Rails メモ

Ruby on Railsの本番実行環境として定着したpassengerです。 では、インストールをしてみます。 まず、passengerをインストールするために必要なモジュール Ruby 基本中の基本 rubygems gemでインストールするので、こちらも基本 あとは、以下のライブラリ群が必要になります。 GNU C++ compiler Curl development headers with SSL support OpenSSL development headers Zlib de ...

Ruby on Rails 3 Tips, Ruby on Rails メモ

Railsで… ホスト名(gendosu.jpという感じ)を得る request.host ホスト名:ポート番号(gendosu.jp:80という感じ)を得る request.host_with_port

Ruby on Rails 3 Tips, Ruby on Rails メモ

Rails 2.*系のプロジェクトで、rakeコマンドをたたくと、 rake/rdoctask is deprecated. Use rdoc/task instead (in RDoc 2.4.2+) というエラーが発生することがある。 このエラーは rake のバージョンが新しすぎるのが原因。 基本的にRails3.0.5より前のRailsでは、rakeのバージョンは0.8.7を使う。 新しいrakeが入っている場合 gem uninstall rake gem install rake - ...