Slides for Ruby on Ales 2015 talk "The Recipe for the World's Largest Rails Monolith" https://ruby.onales.com/speakers#therecipefortheworldslargestrails…
RubyにはGemと呼ばれるサードパーティのライブラリが豊富に存在します。 Gemは大変便利なもので、こういう機能ほしいなと思った際に The Ruby Toolbox や RubyGems.org や Google で検索すると大抵誰かがその機能を持ったGemを作っていたりします。 gemを利用するのも、RubyGems.orgに登録されているものならば と入力することで利用可能となります。 Gemはだれでも簡単に開発でき、審査無しですぐに公開できるため、日々大量のGemたちがRubyGems.orgに登録されています。反面、長年保守されていないGemや品質の低いGemも大量にRubyGems.orgに登録されているのが現状です。 同じ機能を持ったGemも大量に登録されていたりして、どのライブラリを利用してよいのか迷う事も多々あります。 今回は弊社プロジェクトで実際に利用している、便利な
Husband, father, designer & developer, photographer, fly-fisherman, secret admirer of interior design, and proprietor of a silly, and sometimes awkwardly juvenile, monicker. Twitter: @mrpunkin | Flickr: mrpunkin | Dribbble mrpunkin Using Arel for SQL functions If you are anything like me you understand that sometimes there are things you want to do a certain way, simply because you want to underst
ActiveRecord4でこんなSQLクエリどう書くの? Merge編 では、関連先のscopeを使うことができるmergeを紹介しました。mergeを使う事で、変更に強いクエリを美しく組み立てることができました。 今回は、ActiveRecord4で書きにくいSQLクエリたちを紹介します。 書きにくいクエリとは、具体的には以下のものがあげられます。 比較演算ORlikeleft outer joinunionサブクエリexists ActiveRecordでこれらのクエリを組み立てる場合、どうしても美しくない(SQL文字列をべったり書いてしまうような)書き方となってしまいがちです。 この処理を美しく書くためには、ActiveRecordだけの機能では足りず、ActiveRecordが内部で使っているArelというライブラリを使う必要がでてきます。 今回は、Arelを使って華麗にSQLク
Something went wrong! Hang in there while we get back on track Writing an API is almost a given with modern web applications. I’d like to lay out some simple guidelines and best practises for Rails API testing. We need to determine what to test and why it should be tested. Once we’ve established what we will be writing tests for, we will set up RSpec to do this quickly and easily. Basically we’ll
(この記事は Ruby Advent Calendar jp:2010の 15 日目です。前日は tomohiro68 さんでした。) Arelとは Arelの概要については@a_matsudaさんのgihyoの記事を参照してください。 http://gihyo.jp/dev/serial/01/ruby/0043 はじめに 扱うRDBはSQlite3です。 例として以下のようなスキーマを持ったテーブルを取り扱い、進めていきます。 class CreateBooks < ActiveRecord::Migration def self.up create_table :books do |t| t.string :name t.string :category t.timestamps end end def self.down drop_table :books end end 基本的な
平素よりQA@ITをご利用いただき、誠にありがとうございます。 QA@ITは「質問や回答を『共有』し『編集』していくことでベストなQAを蓄積できる、ITエンジニアのための問題解決コミュニティー」として約7年間運営をしてきました。これまでサービスを続けることができたのは、QA@ITのコンセプトに共感をいただき、適切な質問や回答をお寄せいただいた皆さまのご支援があったからこそと考えております。重ねて御礼申し上げます。 しかしながら、エンジニアの情報入手方法の多様化やQAサービス市場の状況、@ITの今後のメディア運営方針などを検討した結果、2020年2月28日(金)15:00をもちましてQA@ITのサービスを終了することにしました。 これまでご利用をいただきました皆さまには残念なお知らせとなり、誠に心苦しく思っております。何とぞ、ご理解をいただけますと幸いです。 QA@ITの7年間で皆さまの知識
ちょっと煽り気味のタイトルにしてみましたが、Railsで開発する時は意識的にOOPに寄せないとオブジェクトの力が活かせなくなるよってことと、Railsが提供しているクラスの責務を分割することを支援してくれる機能について話をします。 ActiveRecordの性質 Rails開発においては、モデル層にロジックを書いてコントローラーは薄くしろ、というのはしつこく言われているので、概ね浸透してきていると思います。 それに加えて、最近私が結構しつこく主張しておきたいのが、モデル = ActiveRecordでは無いよ、ということです。 ActiveRecordは成り立ちから言うと、ロジックとDBへの永続化をまとめてカプセル化するアーキテクチャパターンから来ています。(詳しくはエンタープライズアプリケーションアーキテクチャパターンという書籍を読むと良いです) この方法はロジックが複雑でない場合、つま
In response to the latest Ruby on Rails security announcement we upgraded all of our clients’ Rails projects in less than 36 hours. On average it took around 30 minutes to upgrade a project from checkout to deployment. On Twitter we mentioned our ‘minimal dependency policy’ in projects as being one of the reasons we could move so quickly. We got some questions about what that means exactly. First
おぐらです、RubyKaigi 2013の会場からこんにちは。 現在、弊社で開発中のqnypというサービスは、少し前にRails 3.2.13からRails 4.0.0.rc1へとアップデートを行いました(サービス自体はまだ非公開なのでアクセスはできません)。 このアップデート作業を通じて、 Railsに依存するgemを減らしていく JavaScriptライブラリをラップしただけのgemを使わないようにする という点について重視するようになりました。 1. Railsに依存するgemを減らしていく 特にActiveRecordなどRailsの内部に深く関わるようなgemにおいて、Railsのメジャーアップデート時の対応速度が迅速ではなさそうなものがあったため、できるだけそれらのgemを利用しないようになりました。例えばauditedは、現時点の最新版がactiverecord ~> 3.0
更新情報: 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
Railsでファイルのダウンロードに使うsend_dataですが、日本語ファイルをダウンロードしようとすると文字化けしてしまう。 さんざんググってみてもいい方法が見つからずに苦労したのでメモしておきます。 似たようなことが確かRedmineでできていたな、ということでRedmineのコードを読み解いていいたらありました。 def filename_for_content_disposition(name) request.env['HTTP_USER_AGENT'] =~ %r{MSIE} ? ERB::Util.url_encode(name) : name end url_encodeの部分です。どうやら文字列をエンコードする関数のようです。 実際に組み込んでみるとこんな感じ。 send_data(data, :filename => ERB::Util.url_encode(file
module ActionController module DataStreaming def send_file_headers_with_utf8!(options) send_file_headers_without_utf8!(options) match = /(.+); filename="(.+)"/.match(headers['Content-Disposition']) encoded = URI.encode_www_form_component(match[2]) headers['Content-Disposition'] = "#{match[1]}; filename*=UTF-8''#{encoded}" unless encoded == match[2] end alias_method_chain :send_file_headers!, :utf8
miyagawaさんのPodcast Rebuild: 19でKibanaの話があってちょっと盛り上がり始めてるので、簡単に動作を試せるサンプルアプリセットを作ってみました。 https://github.com/y310/kibana-trial git cloneしてREADMEに書いてある手順を実行していくと大体動くと思います。 railsからfluentdにログを送る部分は、こんな感じでrack middlewareを使って送ります。 # application_controller.rb class ApplicationController < ActionController::Base around_filter :collect_metrics def collect_metrics yield # ensureを使うのは例外時のログも捕捉するため ensure # co
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 のコードに膝まで浸かって、使われているのをこれまで全然見たことがない面白いナゲットを思い出させてくれた。この記事で、十分に活用
require 'rubygems' require 'parallel' require 'open-uri' require 'digest/md5' urls = [ 'http://farm4.staticflickr.com/3052/3086132328_e2041be795.jpg', 'http://farm7.staticflickr.com/6053/6312937936_cebaf2feb9.jpg', 'http://farm1.staticflickr.com/54/131841577_0e67642c02.jpg', 'http://farm3.staticflickr.com/2293/2266151759_058e732577.jpg' ] Parallel.each(urls, in_threads: 2) {|url| puts "start downl
2013-06-25 Rails、あんたなんか嫌いよ - Rails での OO 設計について ruby rails 最近はずっと Rails 書いてるんですが、書けば書くほど嫌いになってくるんです。 倦怠期的なやつなんですが、 Rails さんの悪いところばっかり見えてきて、もう一緒にいたくないんです。 でも別れるほどじゃないし… という愚痴にみせかけた Rails での設計についての議論です。 長いけどコードは一切出てこないので通勤中にでもよんでください。 注意 一部にはげしい言葉遣いがでてくるので、読んで不快になるかもしれません。 不快になったとしても責任は負いかねます。 次のような方の期待に沿う結論はでません。残念でした。 Sinatra, Padrino の人 関数型の人 静的型付けの人 C の人 TL;DR Rails にだまされない。 自分の道を見定める。 欺瞞にみちた Ra
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く