メモ
環境はRails2.0.2,Ruby1.8.6です。 ActionMailerのdelivery_methodに今までsendmailを使っていたのですが、本番アドレスでのDNSの設定に行儀よくspfを設定してあげたので、合わせてrails側の送信もSMTPにする必要が出てきました。ちなみにメールサーバはGoog…
環境:Ubuntu 7.10, rubygems 9.0 こちらに書いてある通り、 sudo gem update --systemを実行したところ、gemコマンドやmongrelの起動で /usr/bin/gem:23: uninitialized constant Gem::GemRunner (NameError)というエラーが出るようになりました。一応、Rai…
(注)動作確認はRails2.0.1 設定データやテストデータをテーブルへ流し込むために、今まではDB側の機能を使っていたのですが(load data infileとか)、少々面倒くさくなってきたのでAWDwR(2版)を調べて見たところ、p252あたりにデータロードに関する記述を見つ…
(注)動作確認はRails 2.0.1 小ネタですが少し引っかかってしまったので参考まで。Ajaxは画面遷移を伴わないので、例えばデータ作成が成功したら詳細画面に飛ぶような処理をしたい場合、サーバからURLを渡してクライアント側で遷移する処理(location.href)を…
(注)確認環境はRails2.0RC1ですが、多分1.2.XでもOK やはりパスワードをDBに生でいれるのはどうかと思うので、 before_save {|user| user.password = Digest::SHA256.digest(user.password)} こんな感じに書いてやりましたところ、新規登録時は問題ないので…
(注)動作確認はRails2.0RC1。多分1.2系でもOK。 Railsで自前configというかメッセージリソースと言うかの標準的な方法がいまいち分かりません。一応この辺も踏まえつつ、前のプロジェクトで教えてもらったのを参考に*1こんな感じで作ってみました。以下でパ…
(注)動作確認環境はRC1です。 今までユニークなidを作るためにuuidtoolsを使っていたのですが、rails2.0では CGI::Session.generate_unique_id でOKなことを発見。コメントに # This is used to generate session ids but may be reused elsewhere. とあるの…
(注)この記事の動作確認環境はRC1です。 以前、Railsはデフォルトでtmp/sessionsにセッションファイルを作り続けるため、sessionsフォルダ内のメンテナンスが必要であるという記事を書きました(こちら)。Rails2.0ではデフォルトでCookieStoreという新しいセ…
Ruby on Railsをデフォルト環境のまま使うと、ログやセッションのファイルが無制限に増えていくので、どこかでそれらを整理する必要があります。正直なところ、この2点が自動化されないのはRails運用上の大きな弱点ではないかと思っています*1。 (追記 Nov 2…
日付(date_select)や日時(datetime_select)などの複数入力フィールドで1つの値を取るデータ項目で、例えば日付を2月31日などと入力すると、ActiveRecord#Errorsにエラーを追加せずに ActiveRecord::MultiparameterAssignmentErrorsなる例外をraiseしてくれて…
Railsのsend_file 認証されたユーザにのみファイルのダウンロードを許可したい場合、公開ディレクトリにファイルを配置するわけには行かないので、アプリケーション側から送信制御を行うことになります。しかし、大容量のファイルを送信する場合、ファイル全…
チェックボックスが非選択の場合、Webブラウザは当該フィールドをparameterとして送信しません。以下はapiからの抜粋ですが、Ruby on Railsのcheck_boxヘルパでは check_box("post", "validated") <input type="checkbox" id="post_validate" name="post[va…
前置き:もしかしてOracle限定かも。時間ができたらMySQLでも試してみます。 以下のmodelがあるとします。 class User ActiveRecord::Base belongs_to :role end class Role ActiveRecord::Base has_many :users end 例えばroles.levelが3以上の人数を数えた…
こちらの続きです。基本的にlink_toやurl_forは指定されたprefixに自動的に対応してくれるのですが、コントローラをグループ化しているときには注意が必要です。 以下の条件でのurl_forの出力を見てみます。 mongrel起動時のprefix: admin 現画面: userでグ…
小ネタですが、ちょっとだけはまったので。 検索ボタン押下時にid="result"の中の表を更新するとします。submit_to_remoteなどを使えば簡単に実現できますが、paginateを使っている場合、各ページへの遷移もAjax対応する必要があります。以下のような感じ。 …
データベースがMySQLの場合、database.ymlに encoding: utf8というようにエンコーディングを指定することができるのですが、Oracleだとこの設定がうまく効かないようです。mongrelなどのアプリケーションが動いているサーバで、環境変数NLS_LANGの設定を行う…
UbuntuやDebianでは、crontabのテキストエディタがデフォルトではnanoになっています。 crontab -e でcronの設定をしたとき、一行が長すぎるとファイル保存時に自動的に改行してしまうので "/tmp/crontab.DKEWNu/crontab":1: bad minute errors in crontab f…
ログファイル内のエラーログを監視するため、ページが見つからないエラー(404)のとき以外はログに"Application Error!"という文字列を出力したくて、AWDwRを参考にapplication.rbに def rescue_action_in_public(exception) case exception when ActionContr…
SSL証明書は結構高いので、あるアプリ内のユーザー入力フォームと別ポートで立てているバックエンドの管理システムを一つのホストに同居させたいケースがあると思います。たとえば本サイトは3001番、管理システムは3002番ポートで起動していて、 本サイト:…
RailsでSSLを扱うとき、railsアプリ内でredirectしているところ(エラーページへの遷移など)ではなぜかhttpsでなくhttpのほうへ飛ばされてしまうという罠が良く知られていて、回避策としてapacheのhttpd.confなどで RequestHeader set X_FORWARDED_PROTO 'h…
時間がなくて、ちゃんと調べられていないのですが・・・ paramsで取得したパラメータをsessionメソッドを使って以下のような感じで引き回して使いたいと思いました。 class MyController これをViewから呼び出すと action1.rhtml: => 1 => params[:id]の値 …
かなりはまったのでメモ。 要件 全角文字以外を入力チェックで弾く JIS X 0208の1区から8区および16区から84区(すなわち外字を除くJIS第2水準漢字までの全角文字)を有効とする デフォルト文字コードはutf-8 で、以下の通り実現 require 'kconv' def zenkak…
サムネイル作成のための画像処理ライブラリを物色。Ruby-GDとかRuby/PureImageとか色々あるようですが、RoRオフィシャルのhttp://wiki.rubyonrails.org/rails/pages/RailsOnUbuntuにRMagickのインストール方法も言及されていたので、これを使ってみることに…
ちょっとはまったのでメモ。Apacheは例によってSynapticで適当にインストール。Mongrelはすでにポート3000番で動いているものとします。 まずはmod_proxyをloadするために以下を実行。 $ sudo a2enmod proxy 続いて/etc/apache2/mods-enabled/proxy.confを以…
SynapticからRuby on Railsを適当にインストールし、そのあとgemでmongrelをインストールしたのですが、なぜかmongrel_railsを実行しようとするcommand not foundになってしまいます。いろいろ検索してたらありました。 Since Rubygems has the potential to…
引き続きUbuntuの開発環境整備中。SynapticからMySQLはさっくり入ったのですが、クライアントのWindowsPCからMySQL Administratorなどでアクセスしようとするとできません。telnetでポートの3306に問い合わせてみても返事が返ってこないので、MySQL側の設定…
rubyやらrailsやらgemやらをSynapticでサックリインストールして、引き続きmongrelのインストールを試みる。Synapticの検索で出てこなかったのでコマンドラインから以下を実行。 sudo gem install mongrel mongrel 1.0.1 (ruby)、fastthread 1.0 (ruby)と選…