実はRailsでの開発を仕事とするようになって、そこそこ経ちました。 初めは、すげー、これ便利! と感動することしきりだったわけですけれど、いざ実運用に乗せてみると苦戦することもたくさん。 今回は、実装するときは、ちょっと立ち止まって考えないと、はまってしまいそうな(ていうか、よくはまってた)事例をまとめてみようかと思います。 NoMethodErrorの罠 まず一番よく出るのが、NoMethodError。 たとえば、モデルのリレーションに belongs_to :user と指定したとしましょう。 で、ビュー側では以下のように書いていたとします。 entry.user.name もしテーブルのuser_idがnilのデータを取得してきたら、NoMethodErrorが出てしまいますね。 ちょっと気を抜くと、このエラーが頻発します。 if entry.user.blank? ? entr
Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
params_inquirerというgemを作りました。何ができるかと言うと、文で説明するのがなかなか難しいので、下のコードを見てください。 # users_controller.rb def index if params[:status].accepted? # params[:status] == 'accepted' と同じ @users = User.accepted elsif params[:status].rejected? # params[:status] == 'rejected' と同じ @users = User.rejected else @users = User.all end end params_inquirerを使うと上のaccepted?のようなメソッドがparamsに対して呼べるようになります。すでにrubygemsで公開してるので、ちょっと試して
Ubuntuで初めてRubyやRailsに挑戦する方のために、最新の Ruby 1.9.3 と Ruby on Rails 3.2 のインストール手順をやや詳しく説明します。 なお、本稿ではRubyのインストールにrbenvを利用します。apt-getでインストールされるRubyはバージョンが古いので、(手順がちょっと複雑ですが)本稿の方法をお勧めします。また、rbenvを利用すると、プロジェクトごとにRubyのバージョンを簡単に切り替えられるというメリットもあります。 本稿が対象とする OS は Ubuntu 12.04 LTS および Ubuntu 12.10 のデスクトップ版です。Ubuntu上でRuby/Railsの学習やRailsアプリケーションの開発をしたい方向けに書いています。開発したRailsアプリケーションをサーバ版のUbuntuにインストールして運用したい方は、Rail
脆弱性の公表と攻撃の開始 数日前に公表されたRuby on Railsの脆弱性(CVE-2013-0156)は、リモートからの任意のコード実行が可能なインパクトの大きいものでした。PoCコードがgithubなどにすぐに出回ったため、私たちのSaaS型WAFサービス、Scutum(スキュータム)では大急ぎでシグネチャの作成や検知エンジンの開発を行いました。 以前、PHPをCGIモードで実行している環境について脆弱性が発見されたときには、発表からわずか数日後に実際にExploitコードによる攻撃を観測しました。そのため、今回も同じように、すぐに実際の攻撃が来るだろうと予想していました。 まず2つのリクエストを観測 予想通り、本日まず2つのリクエストを観測しました。以下のようなものです。(Hostフィールドは伏せ字にしてあります。ウェブサーバのIPアドレスが直接指定されていました。) POST
Posted on 2008年4月24日 Posted by ちゅう コメントする Posted in Development Tags: Rails AJAXで処理書くと、どうしてもCreateの時はデータが不完全でもとりあえず作りたい。みたいなことがあって、それは validate_on_create, validate_on_update で分けたり、各 validates_on_** :on => :update みたいな感じにかけばいいんだけど、sortable_list とかで単一フィールドだけごにょごにょやりたいときは結構困る。 そんなときに使えそうなメソッド。があったんだけど、特に必要がなかったことがわかったという話。 activerecord-2.0.2/lib/active_record/validations.rb : line 932 引数にfalse渡せば、Val
高度なActiveRecord コールバック 14このコールバックが用意されています 基本はbefore/affterなんちゃら。特殊なのとしてafter_initializeとafter_findがあります レコードの登録の流れは以下のような感じになります before_validation 検証の前に呼び出される before_validation_on_create (★)新規レコードの検証前に呼び出される after_validation 検証の後に呼び出される after_validation_on_create (★)新規レコードの検証後に呼び出される before_save 保存の直前に呼び出される before_create/before_update (★)insert/update直前に呼び出される 登録 DBに対してinsertもしくはupdateクエリを発行する a
RailsPanelはGoogle ChromeのインスペクタにRails用パネルを追加するソフトウェアです。 Ruby on Railsは開発速度を飛躍的に向上してくれますが、サーバサイドのログとWebブラウザでの表示を交互に確認するのは面倒に感じていました。そこで使ってみたいのがRailsPanelです。 Google Chrome機能拡張をインストールします。別途Rails側でのライブラリインストールも必要です。 サンプルです。インスペクタにRailsPanelが追加されています。 実行されたSQLも確認できます。 レンダリングに使われたファイルも確認できます。MacVimなどであればここからクリックして開けます。 設定です。TextMate、MacVimが対応に上がっています。 RailsPanelを使えば実行されたアクション、使われたテンプレート、実行されたSQLが一目で確認でき
脆弱性は認証システムの迂回、任意のSQL挿入、任意のコード挿入と実行、Railsアプリケーションに対するサービス妨害(DoS)攻撃などに利用される恐れがある。 オープンソースのWebアプリケーション開発フレームワーク「Ruby on Rails」のセキュリティアップデートが公開され、極めて深刻な脆弱性が修正された。全ユーザーに対し、直ちにアップデートまたは回避策を適用するよう呼びかけている。 Ruby on Railsや米セキュリティ機関US-CERTが1月8日に公開したセキュリティ情報によると、Ruby on Railsのパラメータ解析コードに複数の脆弱性が存在する。認証システムの迂回、任意のSQL挿入、任意のコード挿入と実行、Railsアプリケーションに対するサービス妨害(DoS)攻撃などに利用される恐れがある。 この脆弱性はRuby on Railsの全バージョンが影響を受け、危険度
追記:この技術を使って、コミュニティ解析をするサービスをリリースしました。 Qiita「Twitter API (Ruby)」の続きです。 年末から僕は、TwitterAPIでユーザー情報とフォロー関係を取得し、友人を自動でコミュニティ分類するサービスを作っています。その途中で得られた知見をまとめます。 目次 Devise連携 :ログインユーザーがTwitterAPIを使えるように。 データ取得 :TwitterAPIから大量のデータを取るサンプル。重いので非同期処理。 Visualize :得たソーシャルグラフを可視化してみる(綺麗) 高速化(DB) :redis、それは危険なほどのスピード 高速化(並列処理) :並列処理でAPIアクセスがこんなに速く! 1.Devise連携 認証用Gem, Deviseとの連携です。Qiita「deviseでfacebook,twitter認証」の続き
railsで使用する、text_fieldの入力領域変更など、HTMLの指定をするには、3つ目の引数に渡す。 例、その1 <%= text_field_tag :url, '' ,:size => '80' %>このerbの記述は、こうHTMLに展開される。 <input id="url" name="url" size="80" value="" type="text"> 例、その2 <%= text_field_tag :url, 'default' ,{ :size => '80',:maxlength => '10' } %>このerbの記述は、こうHTMLに展開される。 <input id="url" maxlength="10" name="url" size="80" type="text" value="default" />
WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。 「今週の話題」を除くと、すごく久しぶりの投稿になってしまいました。いろいろあってなかなか時間が取れなかったのですが、やっと復活できそうです。ネタはだいぶ溜まっているので、頑張って書いていこうと思います。 さて、本日ご紹介するのは Rails アプリケーションで配列構造のデータを扱うフォームに役立つ Tips です。 Rails は特殊な name 属性を指定するこ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く