タグ

rubyとrailsに関するgriefworkerのブックマーク (146)

  • RSpecでRequest Describer - Qiita

    WebアプリケーションのHTTPレベルでの振る舞いに対してテストを記述するとき、皆さんはどのような考えを持ってテストコードを記述しているでしょうか。この投稿では、この手のrequest-specと呼ばれるテストについて考えながら、テストを書くときの幾つかの方針と、RSpec::RequestDescriberを利用してテストコードを簡略化する方法を紹介します。 request-specとは request-specという、HTTPにおけるリクエストとレスポンスの組み合わせを、言わばブラックボックスとして扱うテスト形式の呼び名があります。リクエストを入力、レスポンスを出力として扱い、ある入力に対して期待される出力が返されるかどうかをテストします。rspec-railsの中では、request-specに対して以下の説明が与えられています。 Use request specs to speci

    RSpecでRequest Describer - Qiita
  • クックパッドとマイクロサービス - クックパッド開発者ブログ

    技術部の高井です。 最近、日でもマイクロサービスという言葉が流行しつつあります。 今回は、なぜクックパッドがマイクロサービスを選択したのか、また実際にどのようなやり方をしているのかということを紹介します。 Conwayの法則 ここ数年の間、クックパッドレシピの投稿・検索サービスから「を中心とした生活のインフラ」として事業領域を拡大しつつあります。海外レシピサービスの買収による海外展開は、単なる金銭的な関係にとどまらず、人的・技術的な交流も含めて格化しつつあります。また、「モバイルファースト」を標語とするモバイルアプリケーションへの取り組みも加速してきました。 事業領域の拡大やグローバル展開、モバイルファーストといったビジネス要求の変化に応じて、会社の組織構造も変化しています。そして、Conwayの法則 として知られているように、組織構造とソフトウェアアーキテクチャには密接な関係があ

    クックパッドとマイクロサービス - クックパッド開発者ブログ
  • RailsのCSRF対策の仕組みについて - (2015年までの)odaillyjp blog

    先日、Rails で開発しているときに意図しない InvalidAuthenticityToken エラーが発生して、すごくハマってしまいました。そのときに Rails のCSRF対策の仕組みについて調べてみましたので、ブログに残しておきます。 Rails のCSRF対策 Rails が生成した ApplicationController には以下の記述があります。 class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exception end protect_from_forg

    RailsのCSRF対策の仕組みについて - (2015年までの)odaillyjp blog
  • ActiveRecordのjoinsとpreloadとincludesとeager_loadの違い - Qiita

    ActiveRecordでN+1クエリを潰すためにeager loadingを行う場合、preloadやincludesやeager_loadが役に立つ。 Preload, Eagerload, Includes and Joinsという記事にそれらの違いがよくまとめられているんだけど、includesが挙動を変える条件があまり正確に書かれていなくて自信が持てなかったし、そもそも記事が古いのでRails4.1.5のソースを読んで調べた。 せっかく調べたので、全体を通して日語でまとめてみようと思う。 User.joins(:posts).where(posts: { id: 1 }) # SELECT `users`.* FROM `users` INNER JOIN `posts` ON `posts`.`user_id` = `users`.`id` WHERE `posts`.`id

    ActiveRecordのjoinsとpreloadとincludesとeager_loadの違い - Qiita
  • Railsのweb-consoleについて

    Rails 4.2から導入されたweb-consoleについて試してみたのでメモ。なお、試したバージョンは'2.0.0.beta3'。Rails 4.2.beta1だと、2.0.0.beta2がGemfileに記載されているが、2.0.0.beta2はルーティングエラー時にエラーになるバグがあるのでbeta3で。 ### web-consoleとは Rails 4.2のMajor Featuresの一つ。 デフォルトエラーページ用のデバッギングツールで、ブラウザ上からインタラクティブにconsoleの操作が出来る。 [github上の画像引用](https://github.com/rails/web-console)。 エラーが起きた箇所で操作が出来るだけではなく、traceを選択する事で、選択した箇所での値の確認も出来る。[Better Errors](https://github.c

    Railsのweb-consoleについて
  • Rails の rescue_from で拾えない例外を exceptions_app で処理する - Qiita

    rescue_from で拾えない例外がある Rails が用意してくれている rescue_from は controller の外側で発生した例外を拾ってくれない。 例えばパラメータに不正なエンコーディングが含まれるときに、Rails は ActionController::BadRequest を例外として投げる。しかし、この処理は Rails の routing 層で行われているため rescue_from で捕捉することはできない。 そのため Rails の外で発生した例外を捕捉していない場合、ユーザには意図していないエラーページが見えている可能性がある。 Rails の外で起きる例外は exceptions_app で処理するのがお手軽 例えば config/initializers/exceptions_app.rb に以下のコードを書いておく(ErrorsControlle

    Rails の rescue_from で拾えない例外を exceptions_app で処理する - Qiita
  • RailsでAPIをつくるときのエラー処理 - Qiita

    例外を利用して実装すると便利な場合が多い この投稿では、HTTP経由でJSONを返すようなWeb APIRailsを利用して実装するとき、エラーレスポンスを返す場合の処理をどう実装するとやりやすいのか、というニッチな話題に触れる。APIでエラーを返したいとき、即ち400以上のステータスコードと共にレスポンスを返したいような場合、どう実装するのが良いか。もしリクエストの処理中にエラーが検出された場合、それ以降の処理を行わずに直ちに中断してエラーレスポンスを返したいという場合が多いため、例外を利用して実装すると便利な場合が多い。 例外を利用しない方が良い場合もある 1つのリクエストに複数の問題が含まれている場合、先に見つけた問題だけを報告するようなエラーレスポンスを返すのか、それとも問題を抱えながらも進めるところまで処理を進めて報告可能な情報を全て含むようなエラーレスポンスを返すのか、という

    RailsでAPIをつくるときのエラー処理 - Qiita
  • [Ruby] 例えば、ActiveRecord の connection_pool を止める - sonots:blog

    [Ruby] 例えば、ActiveRecord の connection_pool を止める - sonots:blog
  • クックパッドにおける最近のActiveRecord運用事情 - クックパッド開発者ブログ

    インフラストラクチャー部の成田(@mirakui)です。 Rails の OR マッパーである ActiveRecord ですが、みなさんどのように運用していますか? ActiveRecord を使うと、 SQL を直接扱うことなく、抽象化された表現で RDB にアクセスできるので、アプリケーションの開発効率という観点ではメリットが大きいです。 一方で、 ActiveRecord が駆使されているアプリケーションをサーバに配置してプロダクションとして運用する立場からすると、いくつかの問題に突き当たります。 まずはクックパッド体アプリケーションにおける、最新の rake stats をご覧ください。 +----------------------+-------+-------+---------+---------+-----+-------+ | Name | Lines | LOC

    クックパッドにおける最近のActiveRecord運用事情 - クックパッド開発者ブログ
    griefworker
    griefworker 2014/08/28
    Ridgepole 良い。デファクトスタンダードになればいいな。
  • Railsをバージョンアップし続けるために必要なこと - Qiita

    当は、RubyWorld Conf辺りでこういう内容も交えてなんか話せればいいなあと思ってたんだけど、CFPに落ちたのでQiitaにポエムを書いてみました。 Railsはそれなりに学習コストはかかりますが、慣れてくるとデフォルトで便利なものが揃ってるしサードパーティライブラリも豊富で、未だに最も便利なWebアプリケーションフレームワークの一つだと思います。 なので、最近のスタートアップ界隈ではRailsで開発をスタートする、という話をよく耳にします。(個人の感想です) しかし、Rails体に新しい要素をガンガン取り入れてくるので、バージョンアップのサイクルはかなり早く、それに追従していくのはそれなりに大変です。 Railsで開発をする場合には、一旦レールに乗ったらプロダクトが死ぬまで走り続ける覚悟が必要です。(時速60km以下になったら爆発する) それを最初に理解しておかないと、あっ

    Railsをバージョンアップし続けるために必要なこと - Qiita
  • Turbolinksをオフしないためにやった事 - Qiita

    この記事は Turbolinks v2.2.0 時点のものです Turbolinks Classic is now deprecated Rails4系で使われていたTurbolinksはturbolinks-classicと命名が変更されました。 Rails5ではVersion 5 として turbolinks のversion ~> 5.0 が使われます。動作としては似てますが内部の実装が大きく変わっているので注意してください。 Turbolinksとは TurbolinksはRails4.0からデフォルトで導入されたgem railsアプリケーションを 簡単に pjaxっぽくすることが出来る。 ajaxとhistoryAPI(popState, pushState)を利用して画面遷移 Turbolinksで遷移する場合は、titleとbodyとcsrfトークンを変更する csrfトー

    Turbolinksをオフしないためにやった事 - Qiita
  • Railsのルーティングを読みやすく作っていく - Qiita

    Railsアプリケーションのルーティングは、config/routes.rb1ファイルで最初は開発を始めると思います。 ただ、サービスを運用していくとルーティングは膨らみ、メンテナンスコストも馬鹿になりません。 そのため、ルーティングの設定をできるだけメンテナンスしやすく作っておくことでそのコストを下げようという試みです。 Railsのルーティングは、config/routes.rb がルーティングの設定ファイルにデフォルトで指定されています。 ただ、これは変更可能ですし、複数のファイルに分割もできます。 昨今のアプリケーションの用途は、Web、native(iOS、Android)、APIサーバ、と多岐にわたるので、 config/routes.rb config/routes/api/v1.rb config/routes/api/v2.rb config/routes/web.rb

    Railsのルーティングを読みやすく作っていく - Qiita
  • ActiveRecordで集計関数の結果を複数selectしたいんです - なんでや。。

    select sum(min_salary), sum(max_salary) from jobs; これをActiveRecordで書きたい。 ベタに書くと rec = Job.select(<<-SELECT).all[0] SUM(MIN_SALARY) AS MIN_SALARY ,SUM(MAX_SALARY) AS MAX_SALARY SELECT # => SELECT SUM(MIN_SALARY) AS MIN_SALARY # ,SUM(MAX_SALARY) AS MAX_SALARY # FROM "JOBS" p rec.min_salary # => 124888 p rec.max_salary # => 251088 こうなる。 関係ないけど、仕事中にActiveRecordの書き方で詰まったら、諦めて直接SQL書いた方が早いよね。閑話休題。 こう書けそう

    ActiveRecordで集計関数の結果を複数selectしたいんです - なんでや。。
  • Railsのオブザーバまとめ | TECHSCORE BLOG | TECHSCORE BLOG

    こんにちは、鈴木です。 今回は Rails のオブザーバの話をします。 オブザーバとは Rails のオブザーバとは、デザインパターンの Observer パターンを実現する仕組みです。 可能なことはコールバックと同じで、バリデーションやデータベースへの保存が行われるタイミングで行う処理を記述することができます。 コールバックとオブザーバのどちらを利用するかは、その処理がモデルの一貫性を保つために必要であるかという基準で考えると良いでしょう。 保存前に入力されたパスワードをハッシュ化するのであればコールバック、会員登録後に登録完了メールを送信するような場合はオブザーバが適しています。 オブザーバの作成 オブザーバは以下のような ActiveRecord::Observer を継承したクラスです。

  • Railsでapp以下の変更をSpringが検知しない問題を解決した(?)

    最近またSpring を使い始めたんですが、相変わらずモデルやコントローラ を変更してもSpringは検知しませんよね?みんなどうしているんだろう? files in the app directory are not being watched · Issue #115 · rails/spring このIssueによると、そもそもRailsのリロードはコストが高いため、 Springはリロードが必要ない設計にしているそう。 うーん、、、とは言ったものの実際問題、モデルのメソッドを修正した後 テストを走らせても、変なエラーが出て、手動でリロードさせると直ると いうことが多々あります。 ちなみに手動リロードはtouch config/application.rbでイケます。thx! Springって touch config/application.rb でrestartさせるのか。htt

  • RailsアプリでSQLを発行している場所を特定するのにquery_traceとかいうgemがぐう便利 - Qiita

    RailsアプリでクソみたいなSQLを大量に発行している箇所を知りた〜い Railsアプリで、発行されるSQLの量を頑張って減らすときに、例えばN+1問題をなんとかしたいと思ってBulletとかいうgemを入れて、N+1を出している箇所を特定したりする場合は多いと思います。 実際bulletはすっごい便利なんですが、N+1問題を発生させている箇所を検出できない場合があったり、そもそもの原因がもともと書いているロジックが悪くて、それの見直しで解決しなきゃいけない場合だったりとかする場合がよくあると思います。 で、それで前々から 「このTerminalに出てくるSQL文、Railsアプリのどこが出してるのかな〜それがわかったら超ベンリなのにな〜〜〜」と思ってました。 会社の同期に聞いたらめっちゃ便利なのがあったんで以下に書きます。もっと早く知りたかった。 query_traceをぶっこむ qu

    RailsアプリでSQLを発行している場所を特定するのにquery_traceとかいうgemがぐう便利 - Qiita
  • http://tech.taskrabbit.com/blog/2014/02/11/rails-4-engines/

    griefworker
    griefworker 2014/07/02
    DjangoのReusable Appと同じようなことが、RailsでもEngineを使うことで可能。
  • 英語でRuby & Railsを学ぶのにオススメのサイト5選 - EduTalk

    僕は基的に英語を勉強するのではなく、英語で勉強することを意識して行っています。そのためプログラミングの勉強をする場合でも日語の記事やはそこにしかない情報があるという場合を除けば使わずに基英語のサイトや記事を利用することにしています。 そこで今回は、RubyRailsを学んで居る方にオススメの英語サイトを5つ紹介します。 無料サービス 1. Ruby Monk https://rubymonk.com/ Ruby作者のまつもとさんもTwitter上でオススメしていたサイトです。コードカデミーのようなイメージで解説を読みながら、プログラミングの設問をこなしていきます。初級者向けからコースがありますが、個人的にはメタプログラミングのコースが役に立ちました。 2. Codecademy http://www.codecademy.com/ 言わずと知れたコードカデミーです。プログラミング

    英語でRuby & Railsを学ぶのにオススメのサイト5選 - EduTalk
    griefworker
    griefworker 2014/07/02
    英語を勉強するのではなく、英語で勉強する、というやり方は真似したい。
  • Rails で十分に活用されていなくてもったいない ActiveRecord::Relation のメソッド TOP 10 - 杉風呂2.0 - A Lifelog -

    2013年12月2日更新: 参照されることが多いので Rails 4 の情報を訳注として追記しました。また、Rails 4 に関する情報は、 WEB+DB PRESS Vol.73 が非常に参考になるので、一読をおすすめします。 この文章は Mitch Crowe 氏のブログより 2012年4月14日の記事を翻訳したものです。 The 10 Most Underused ActiveRecord::Relation Methods http://blog.mitchcrowe.com/blog/2012/04/14/10-most-underused-activerecord-relation-methods/ 昨日は ActiveRecord::Relation のコードに膝まで浸かって、使われているのをこれまで全然見たことがない面白いナゲットを思い出させてくれた。この記事で、十分に活用

    Rails で十分に活用されていなくてもったいない ActiveRecord::Relation のメソッド TOP 10 - 杉風呂2.0 - A Lifelog -
  • GitHubを使った複数人でのスキーマ管理 on Rails - so what

    要約 Chefみたいなスキーマ管理ツール(Ridgepole)を使うと、GitHubを使ったワークフローでスキーマを管理できる(と思います、たぶん) RailsのMigrationsについての問題提起 Migrationsは便利な仕組みですがベストではないと常々思っていました。 具体的には、特定のマイグレーションを保留にしにくいとか、複数人で作業するとコンフリクトすることがあるとか。 大きめのRailsプロジェクトだと特別なワークフローを用意して解決しているんですかね…声出して行こうぜ!とか。 Chef的スキーマ管理ツール: Ridgepole https://github.com/winebarrel/ridgepole (デモ) 以前からそのようなそのような問題意識があって、たぶん Chef的な冪等性保証する(操作ではなく定義を書くたぐいの)ツールがあれば解決できそう、でも実際作るの大

    GitHubを使った複数人でのスキーマ管理 on Rails - so what