タグ

Railsに関するlarkerのブックマーク (179)

  • コントーローラーとルーティング ー StoneDot の Ruby on Rails 講座

    今回はコントローラーが一体何をしているのか、そしてルーティングについて解説していきたいと思います。 Action Controller Overview と、 Rails Routing from the Outside In を参考にしました。 コントローラーの概要 まず、 Rails のコンポーネントの一つである、 Action Controller は MVC の C に当たることは初回に説明しました。 対してどのコントローラがリクエストの処理を行うか決めることをルーティングといいますが、これを決めるのは Action Routing の仕事です。 コントローラの仕事はリクエストの意味を理解し、それに合わせて適切な処理、出力を行うことです。 そのために Rails は様々な道具を用意してくれています。ここからはその道具について見ていきます。 メソッドとアクション Rails でコント

  • ruby/rails/RailsGuidesをゆっくり和訳してみたよ/Action Controller Overview - 株式会社ウサギィwiki

    1 Action Controller概要(Action Controller Overview) † このガイドではどのようにコントローラは動いているのか、どのようにアプリケーション内でリクエストサイクルに合わせているのかを学ぶことができます。 このガイドを読んだ後、以下のことができるようになります: コントローラによるリクエストの流れ なぜ、どのようにこのセッションやクッキー内のデータを保存するのか リクエストが処理されている間のコードが実行するフィルターの働き アクションコントローラの内蔵型HTTP認証の使用 ユーザーのブラウザへの直接的なデータの流れ 敏感なパラメータのフィルタ、これはアプリケーションのログに現れない リクエストの処理中に起きるかもしれない例外の処理 ↑ 2 コントローラは何をしますか?(What Does a Controller Do?) † Action C

  • Railsノート - ActionController::Request の生成過程を Webサーバーまでさかのぼる - Alone Like a Rhinoceros Horn

    Cookie について調べたときに ActionController::Requestクラスについてちょっと触れたので、今回はこれが new されるところを見てみようと思う。クライアントからの HTTPリクエストがサーバーの 80番ポートに届いて、それが Webサーバーに捌かれてアプリケーションに振り分けられ、ActionController::Request というオブジェクトになる、まさにその瞬間というか、そこへ至る過程を理解したい。 参照する Rails のバージョンは 2.3.5。コメントなどは適当に省いてある。 ActionController::Request まずは ActionController::Request の initialize からスタート。 ここから順次その呼び出し元を辿っていこう。 # actionpack/lib/action_controller/re

    Railsノート - ActionController::Request の生成過程を Webサーバーまでさかのぼる - Alone Like a Rhinoceros Horn
  • アプリケーションの処理フローを追ってみる - pochi's weblog

    今回調査すること Requestがどのように受け渡されるか ActionControllerのバージョン: 2.3.5 ご参考 Railsノート - ActionController::Request の生成過程を Webサーバーまでさかのぼる こっちのが詳しく書かれています。いろいろ勉強になります。 最初の流れ httpリクエストの簡単な流れは,リクエスト=>処理=>レスポンスだ。 その受け渡しの部分を順番に見ていく。 リクエスト まずは、HTTPリクエストを受け取り、処理側に渡す部分。 Railsでは今Rackが標準で利用されている。詳しく調べてないけどRackはHTTPサーバ(MongrelやPassenger)とアプリケーションの間で動くミドルウェアでアプリケーションから見たリクエストをどのHTTPサーバから来ても同一のものに変更してくれるものだと認識している。 Rackのサンプル

    アプリケーションの処理フローを追ってみる - pochi's weblog
  • RailsのアソシエーションまわりでNoMethodErrorが起こった時に思い出したいこと

    1週間くらい前にも全く同じ所で30分くらい詰まっていたのに、また同じ所で15分くらい詰まっていたので自分用にメモをしておく。 外部キーの設定もしっかりやった モデルへのリレーションの設定もやった 「これでアソシエーションの設定は整った」と思いきや、いざ動かしてみると NoMethodError が起こった。 以下モデルとビューのソースコードの抜粋。 # モデル @mails = mail.all #ビュー <% @mails.each do |mail| %> <%= mail.attachment.filename %> <% end %> 原因は、#each でぶん回してる全てのmailオブジェクトにattachmentがついているとは限らないためだった。 nilになる可能性があるものに対してメソッド呼び出しをする際には、呼び出す前に確認をしなければならない。 以下のように書きなおせば

    RailsのアソシエーションまわりでNoMethodErrorが起こった時に思い出したいこと
  • Railsでの実装で気をつけたい3つの罠 - Katawara.*

    実はRailsでの開発を仕事とするようになって、そこそこ経ちました。 初めは、すげー、これ便利! と感動することしきりだったわけですけれど、いざ実運用に乗せてみると苦戦することもたくさん。 今回は、実装するときは、ちょっと立ち止まって考えないと、はまってしまいそうな(ていうか、よくはまってた)事例をまとめてみようかと思います。 NoMethodErrorの罠 まず一番よく出るのが、NoMethodError。 たとえば、モデルのリレーションに belongs_to :user と指定したとしましょう。 で、ビュー側では以下のように書いていたとします。 entry.user.name もしテーブルのuser_idがnilのデータを取得してきたら、NoMethodErrorが出てしまいますね。 ちょっと気を抜くと、このエラーが頻発します。 if entry.user.blank? ? entr

    larker
    larker 2014/05/19
    はまった時どうなったか知りたい
  • ActiveRecordのコネクションプーリングをやめてみる - kaeruspoon

    おおいしつかさ 旅行とバイクとドライブと料理と宇宙が好き。 Ubie Discoveryのプログラマ。 関連 : RailsMysqlスレーブ群をロードバランサ経由で使用できる、FreshConnectionを作り始めました RailsのActiveRecordは、DBとのコネクションがプールされます。 アクセスごとにコネクションをはりなおすよりは、オーバーヘッドがない分、理にかなっているようにも思えます。 ただ、比較的大きめなサイトになってくると、はりっぱなしのコネクションが多くなりすぎちゃって大変なことになってきます(1サーバ1万コネクションとかなりかねない)。リソースはうし、たくさんのスレーブを抱えているときにActsAsReadonlyableなどでちまちまやっていたらとても運用できません。スレーブなんてLVS+keepalivedでバランシングしちゃいたいところ。でもコネクシ

  • 【Rails】Controllerで重い処理を実行する - ふわふわRuby on Rails

    (Controllerに限らないですが)重い処理があると、htmlレンダリングはその処理後に行われるためユーザにはフリーズしたように見えてしまいます。(´・ω・`) 〜コントローラで〜 def heavyTask #重い処理 sleep(1000) end 、、、1000秒待たないと画面が表示されないよ(´・ω・`) 重い処理はThread.start()で別スレッド化して、同時にhtmlレンダリング出来るようにしましょう。 def heavyTask Thread.start do #重い処理 sleep(1000) end #重い処理を待たずにhtmlレンダリングできるよ(`・ω・´) end 以上のコードで、重い処理と画面表示を並列化出来ます。ぱちぱち。 ん、重い処理が終わったらその通知を画面に表示したいのですか? それはまた別のおはなし。(←ホントは知らな(ry 【注意】 Thre

    【Rails】Controllerで重い処理を実行する - ふわふわRuby on Rails
  • Railsアプリつくった - ✘╹◡╹✘

    最近APIサーバ用途でRailsアプリを1個つくったので振り返る。 概要 接続元はiOSやAndroidアプリとか、Webブラウザとか、別のWebアプリケーションとか。1ホストあたり秒間数百リクエスト、平均応答時間10msぐらい。Rails 4.1.0.rc2、Unicorn、Nginxを使ってる。正直Railsは全部入りで重いイメージがあったので何となく平均50ms以内程度であれば良いところだろうと思ってたけど、意外と速い。多分そもそもサーバの性能が良いんだと思う。実装時に気を付けたことは普段の開発と特に変わりない。いつもは大勢でワイワイ開発するものに少し手を加えるということが多いんだけど、今回は珍しく自分一人でつくったから目が行き届いてたのかもしれない。DBへの問合せの効率に気を配るとか、Rubyでの処理の無駄を省くとか、アプリケーションのプロセスに無駄なコードを読み込ませないとか、計

    Railsアプリつくった - ✘╹◡╹✘
  • MongoDB+Ruby on Rails4アプリ作成 - Qiita

    MongoDBを使ってRuby on Rails4アプリケーションを作成する方法を解説 今回、Rubyのバージョンは2.1、 OSは「Ubuntu12.04」を使用し、 Rails4は環境は整っている前提とします。 MongoDBのインストール リポジトリの公開鍵を取得します。

    MongoDB+Ruby on Rails4アプリ作成 - Qiita
  • Rails で MongoDB を使ってみた

    Ubuntu Karmic (9.10) で MongoDB + mongoid を使って簡単な Rails アプリケーションを作ってみました。 MongoDB とは、最近注目を集めつつあるドキュメント指向データベースの一種。mongoid は MongoDB にアクセスするための RubyGems。 参考資料: http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages http://mongoid.org/docs/installation 次の行を /etc/apt/sources.list の末尾に追加 deb http://downloads.mongodb.org/distros/ubuntu 9.10 10gen aptitude で MongoDB をインストール。 % sudo aptitude updat

  • Railsで定数を環境ごとに管理するrails_config(現 config) - Qiita

    $ bundle install --path vendor/bundle $ bundle exec rails g config:install create config/initializers/rails_config.rb create config/settings.yml create config/settings.local.yml create config/settings create config/settings/development.yml create config/settings/production.yml create config/settings/test.yml append .gitignore

    Railsで定数を環境ごとに管理するrails_config(現 config) - Qiita
  • Ruby on Rails on MySQL チューニング入門

    Rails 3 系+MySQL を利用しているサービス向けに 1. どのようにボトルネックを探すのか 2. どのような設計を行えばいいのか 3. Rails上でどのようなコードを書けばいいのか の3点に絞ってこのプレゼンをみてチューニングを行えるように資料作成を行いましたRead less

    Ruby on Rails on MySQL チューニング入門
  • メモ || NetBeansでRails3の開発を快適に行うために...

  • InfoQ: Railsで実現する見事なグラフ

    この記事では、サンプルアプリケーションを用いて、Ruby on Rails上でFusionChartsを使用してグラフを作成するメカニズムについて説明します。この記事に記載するサンプルアプリケーションを実行するには、以下が必要です。 •  FusionCharts Free/ v3 FusionCharts Freeは www.fusioncharts.com/free から、またオプションが追加されたコマーシャルバージョンはwww.fusioncharts.com からダウンロード可能です。この記事では、フリーバージョンを使用してグラフ作成を行います。 FusionChartsのインストールに必要なことは、swfおよび.rbファイルをダウンロードパッケージから適切なアプリケーションフォルダにコピー&ペーストすることだけです。なお、.rbファイルはDownload Package > Co

    InfoQ: Railsで実現する見事なグラフ
  • 肥大化したActiveRecordモデルをリファクタリングする7つの方法(翻訳)

    更新情報: 2013/11/19: 初版公開 2021/01/08: 訳文見直し、追記 こんにちは、hachi8833です。今回は、自分が知りたかった、Active Recordモデルのリファクタリングに関する記事を翻訳いたしました。1年前の記事なのでRails 3が前提ですが、Rails 4以降でも基的には変わらないと思います。リンクは可能なものについては日語のものに置き換えています。 なお、ここでご紹介したオブジェクトは、app以下にそれぞれ以下のようにフォルダを追加してそこに配置します。 注記: 以下は使われそうなフォルダを列挙しただけであり、実際にはこの一部しか使いません。 Value Object Service Object Form Object Query Object View Object Policy Object Decorator ⚓ 肥大化したActive

    肥大化したActiveRecordモデルをリファクタリングする7つの方法(翻訳)
  • [rails]establish_connectionで接続先DBを変更する。

    module CustomConnection def establish_connection_to_other case Rails.env when "development" establish_connection :other_development when "test" establish_connection :other_test when "staging" establish_connection :other_staging when "production" establish_connection :other_production end end end ActiveRecord::Base.send(:extend, CustomConnection)

  • [rails] ActiveRecord3の connection_pool の挙動を調べた - よしだメモ

    的にRailsでは単一のDBを使用するように設計されています。とはいえ負荷軽減のためだったり、あるいは様々なしがらみのために複数のDBに接続しなければいけない場合がたまにあったりすると思います。しかも残念な事に違うDBに同じ名前のテーブルがあったりしてどうすんだよコレとなることも無いとは言えないでしょう。 ActiveRecord が connection pool に対応したのは知識としては知っていましたが複数のDBに実際につなぎにいったばあい connection はどうなるの?と疑問に思ったので調べてみました。 # activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_specification.rb 51行目 - 82行目 def self.establish_connectio

    [rails] ActiveRecord3の connection_pool の挙動を調べた - よしだメモ
    larker
    larker 2013/10/03
    ActiveRecordについて
  • [Rails3] ActiveReocrdで外部DBを使う

    Railsでは基的に1つのDBを使用するように設計されています。デフォルトで使用するDBは config/database.yml 内で、実行モード(Rails_Env:development/test/production)別にDBが指定されていますが、これらのデフォルトのDB以外のDBに接続するやり方です。 用途としては例えば、他のシステムで使用しているユーザテーブルを参照する(いわゆるレガシーDBというやつですね)、アクセスログデータを別のサーバ上に保管する、などといった場合があるでしょう。 ここで想定する外部DB/テーブルの条件使用しているデータベースのアダプタがある MySQL, PostgreSQL, SQLite3, Oracle, DB2, SQL Server, ... 使用するテーブルに、整数型の単独の主キーが存在する Railsアプリケーションのサーバからアクセスが

    larker
    larker 2013/10/03
    establish_connection
  • Railsで複数のデータベースを使用する | TECHSCORE BLOG | TECHSCORE BLOG

    こんにちは、鈴木です。 Ruby on Rails で複数のデータベースを扱う方法をご紹介します。 establish_connection establish_connection はデータベースと接続するためのメソッドです。 通常は明示的に呼び出すことはありませんが、複数のデータベースを使用する場合は、以下のように明示的に呼び出す必要があります。 class User < ActiveRecord::Base establish_connection :adapter => 'postgresql', :encoding => 'unicode', :database => 'other_database', :pool => '5', :username => 'USERNAME', :password => 'PASSWORD', :host => 'localhost' end

    larker
    larker 2013/10/03
    複数DBの指定の仕方