You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
はじめに 実際に運用していた時に非同期にしていた主な処理は下記のようなものがあります。 iOS Android の push 通知の送信処理 ログの作成 様々な外部 API の呼び出し 非同期で更新しても問題ないデータの更新 Sidekiq is なに sidekiqは非同期処理を実現する gem 他にも Ruby で非同期処理を実現できる有名な gem には resque や delayed_job 等がある。 sidekiq.org Enterprise版等もありますが、 今回はOSS版を使用している前提でのお話しです。 他の非同期処理が可能な gem との簡単な比較 FAQ · mperham/sidekiq Wiki · GitHub この内容は結構真実を語っていることを最近知った Sidekiq Redis マルチスレッド リトライ処理あり おしゃれなダッシュボード Resque
client = Marvelite::API::Client.new( :public_key => 'abcd1234', :private_key => '5678efgh') # fetch a list of characters client.characters client.characters(:name => 'Spider-Man') client.characters(:limit => 10, :offset => 400, :orderBy => 'name') # fetch a single character client.character(1009610) client.character('Spider-Man') # fetch a list of comics client.comics client.comics(:format => 'gra
Thorでタスクを書くとそのメソッドが普通のRubyのようには呼べません。 それでもやっぱりテストは書きたいのでThorのspecをいろいろ見てたらありました。 # encoding: utf-8 require "rubygems" require "thor" require "rspec" require "stringio" class Sample < Thor desc "name", "sample name" def name puts "pochi" end end describe Sample do it "should display 'pochi'" do capture(:stdout) { Sample.new.invoke("name") }.strip.should == "pochi" end end
ActiveJobのバックエンドと、永続化先としてRedisが好まれる理由Rails 4.2で、ActiveJobというクラスが導入されました。 これ以前より、Railsで非同期処理を行う際にはResqueやSidekiq、Delayed Jobなどが広く使われていましたが、 ActiveJobはジョブを記述するためのインタフェースを抽象化して、 ジョブの実装を変えること無くジョブランナーを切り替えることを可能にするものです。 なおActiveJobにおいては、バックエンドを指定しなければジョブは非同期実行しようとしても即座に実行されます。 Rails 4.2.0時点では、ActiveJobのバックエンドとして以下のページにある9つのいずれかを使用できます。 ActiveJob::QueueAdapters Backburner Delayed Job Qu Que queue_class
bundle gemでgemライブラリのひな形が作成できる その中で、-b オプションを付けると実行ファイル用のbinディレクトリが作成される。しかし、Bundler 1.8系からは bin ディレクトリは binstub用(で良いのかな)のsetupやconsoleスクリプト等(-bを付けなくても生成される)が配置され、gemライブラリの実行ファイル用として exe ディレクトリが用意されるようになる。 1.7.9 と 1.8.3での確認 1.7.9 で bundle gem プロジェクト名 -b -t した結果 ➜ /tmp tree baz baz ├── Gemfile ├── LICENSE.txt ├── README.md ├── Rakefile ├── baz.gemspec ├── bin │ └── baz ├── lib │ ├── baz │ │
ネーミングの時のハイフンとアンダースコアの使い分けが、自分の中で曖昧なところがあったのでメモ。 言語やフレームワークによって色々あるかもしれませんが、以下、Ruby(gem)の場合です。 Eric Hodel氏の推奨するネーミングルール RubyGemsの作者、Eric Hodel氏は自身のブログで次のように推奨しています。 How to Name Gems Here is my STRONG recommendation on how to name gems: Use underscores ・fancy_require ・newrelic_rpm ・ruby_parser This matches the file the user will require and makes it easier for the user to start using your gem. gem i
公私含めて2年間でたぶん30個以上はgemを作ってますが、なんとなく体得はしたもののこういうことは誰も教えてくれなかった気がするので残しておきます アンダースコアとハイフンを使い分ける gemを作る第一歩は bundle gem <作りたいgemの名前> ってやると思いますが、単語区切りであればアンスコ、ネームスペースの区切りだったらハイフンを使います アンダースコア区切り $ bundle gem go_princess_precure Creating gem 'go_princess_precure'... create go_princess_precure/Gemfile create go_princess_precure/.gitignore create go_princess_precure/lib/go_princess_precure.rb create go_pri
ベースにこれを使う。 https://github.com/holli/auto_strip_attributes gem "auto_strip_attributes", "~> 2.0" で、これだけだと全角スペースには対応してないけど、さいわい好きな処理を挟めるフィルター機能があるのでそれを使う。っていうか、これ使うともう別にstripじゃなくてもなんでもよくなるっていうか。 config/initializers/auto_strip_attributes.rb AutoStripAttributes::Config.setup do set_filter strip_zenkaku: false do |value| value.gsub(/(^(\s| )+)|((\s| )+$)/, '') unless value.nil? or !value.kind_of?(Strin
Strip#stripを使うだけでは半角スペースとか改行文字しか取り除けないので、before_validation時に全角スペースを取り除く方法を考える。 ちなみに Ruby は 2.1.2、Rails は 4.1.0 を前提に書いてます。 auto_strip_attributes の導入 auto_strip_attributesという gem があったのでとりあえず使ってみる。 Gemfile に書いて、bundle installする。 gem "auto_strip_attributes", "~> 2.0" こうやって使うっぽい。 class User < ActiveRecord::Base # Normal usage where " aaa bbb\t " changes to "aaa bbb" auto_strip_attributes :nick, :commen
2. 本資料について 本資料は、社内勉強会の補助資料です 外部向けに書かれていない記述などがあります 資料だけですべて伝わるような配慮はされていません 本資料の取り扱いについて 再配布等のご相談は baba@bpsinc.jp までお願いします。 4. なぜGemを読むのか 自分で安全を確認できる Gemは無保証 詳しい挙動を把握できる 一風変わったことを実現できるか調べたい ドキュメントは完璧ではない トラブル解決できる ブラックボックスに振り回されることがなくなる 勉強になる 知的好奇心 OSSは高品質なコードが多い 5. なぜGemを読むのか レベル0 Gemを使えない レベル1 解説サイトをコピペしながら基本的な機能を使える レベル2 READMEやリファレンスを読んでほとんどの機能を使え る
いきなり読み始めてもよいのですが、事前に軽く準備しておくと読みやすくなります。 読みたいソースコードをダウンロード bundle install --path vendor/bundle 検索用のインデックスを貼る 読む bgm.rbを例に説明します。 読みたいソースコードをダウンロード hitode909/bgm $ git clone git@github.com:hitode909/bgm.git $ cd bgm bundle install --path vendor/bundle $ bundle install --path vendor/bundle . . Installing json 1.8.2 Installing multi_xml 0.5.5 Installing httparty 0.13.3 Installing itunes-search-api 0.1.
こんにちは、鈴木です。 Rails の便利なライブラリをシリーズでご紹介してみたいと思います。 今回は「N+1 問題」を検出してくれるライブラリ、bullet です。 bullet (http://github.com/flyerhzm/bullet) N+1 問題 N+1 問題とは、OR マッパーを使用しているときに発生しがちな問題です。 何かの一覧画面を作成しているときに、 一覧に表示するデータを取得するために SELECT を 1 回実行(N レコード返される) 各データの関連データを取得するために SELECT を N 回実行 データベースアクセス(SELECT)が合計 N+1 回も実行される(JOIN して 1 回の SQL で取得した方が効率的) というものです。 具体的なコードで考えてみましょう。 例として店舗の一覧画面を作成しているとします。 関係するモデルは以下の通りです
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く