Rails

コントローラ名

コントローラの名前というのは、単純にモデル名をそのまま使うべきでは無い(と思う)。 デフォルトのscaffoldが生成してくれるコードは、モデルに対して標準的な操作を行うための物であるけれども、これは「モデルに対する」コントローラであるので、それ以…

Railsでファイルアップロード用フィールドを作る時の注意点

Railsでfile_fieldを使ってファイルアップロード用のフィールドを作るとする。今回はpdfをアップロードできるようにしたかったので、とした。 で、Report.rbの方にpdf=というメソッドを定義すると自動的にアップロード時にそれを呼んでくれる。引数としては…

Yasagrails

タイトルに特に意味はない。Railsが思い通りに動かず、非常にやさぐれた気持ちになっているので。 Railsでは、フレームワークの中のコードは綺麗に書けるのかもしれないが、フレームワーク自体は割と黒魔術でできている。ソースを読んだわけじゃないけど、if…

scgi_railsが動かなかった(解決した)

config/environment.rbの最初の方にActiveRecord::Base.colorize_logging = falseが書いてあったのがまずかった。一番後ろに移動すると動くようになった。scgi_railsはデフォルトでproduction environmentなのが関係あったりするのかもしれないけど、もうそ…

production environment動いた

export RAILS_ENV=productionとしてrake migrateをしたら動いた。ただ、login_engineのusersテーブルが自動では作成されないので、ちょっとはまった。(usersテーブルはちょっといじってあるのだが、存在しないテーブルをいじることになるのでエラーになった…

コールグラフ作成スクリプトが動かない

production環境とdevelopment環境で何が違うのかを調べるために、まずコールグラフを作ってみるべくcallg.rbを使ってみたのだが、コールグラフが生成されない。fact.rbとかだと生成されるのだけど…。

production environmentが動かない

Railsで作った課題提出用アプリをいざ本番環境へ導入…しようとしたが、全然動かない。いろいろ調べてみた挙げ句、そもそもproduction環境だと動かないという事が判明。sqlite3を使っていると「ActiveRecord::StatementInvalid」というエラーが、そしてMySQL…

自動テスト動いた

Railsアプリの自動テストではなく、課題の自動テストが。スクリーンショットは以下のような感じ。textareaにコードを張り付けて「Exec test」のリンクをクリックすると、コードがサーバ側に送られ、IOを潰した安全なgoshプロセスで実行される。初めてAJAX使…

find_all

問題IDがparams[:issue_id]として、Report.find_by_issue_id(params[:issue_id])では問題IDが一致する一番最初のレポートしか入手できない。試行錯誤した後で、Report.find_all_by_issue_id(params[:issue_id])としてやると、問題IDが一致する全てのレポート…

雑感

Webアプリケーションの開発はショッピングカートCGIを書いた事があるとかその程度の経験でしかない人間が、最新のWebアプリケーションフレームワークである所のRuby on Railsを使って開発をしてみた感想。 いろんなところではまる。(railsの責任ではないと…

管理者権限の付与

Webアプリで良くある設定として、権限によってできる事を変えたい、というものがある(と思う)。 今作っているのはレポート課題提出アプリで、権限としては 課題の提出ができるユーザ権限 課題の作成・全てのユーザが提出した課題が見られる管理者権限 の2…

fielsWithErrors

やはりtextareaのエラー表示に関するこの仕様は気に要らない。どうすれば良いのだろうか。そもそもの問題は、 divで背景色を変えているので、textareaでwidthを指定できなくなる エラー時とそうでないときで親要素が変わるので、インデントが崩れる の2点ぐ…

fieldWithErrors

正常系の開発はちゃくちゃくと進んでいる。グループ機能以外は大体実装完了で、今は細かい所を詰めている感じだ。(あ、あと自動テスト機能が未実装だ…) しかし、異常系でちょっとはまっている。入力エラーが出たtextareaはというタグで囲われるのだけれど…