あんまり需要なさそうなのでメインブログから引っ越し。mockについて。 14.1 Test Doubles Test Doubleは他のオブジェクトの代わりをするオブジェクト Spec::Mocks double("double") stub("stub") mock("mock") これらのメソッドは全部同じで Spec::Mocks::Mock クラスのインスタンスを作成する。引数の文字列は option 扱いだけれど、 failure message の中で使われるので入れておいた方がいい。 14.2 Method Stubs Method Stub はあらかじめ決めておいたresponseを返すメソッドのこと。 describe Statement do it "uses the customer's name in the header" do customer = double
What I’ve found A few minutes ago, I was watching a great screencast of Corey Haines doing a kata. I stopped when he was refactoring a few similar assigments. There was something I’ve never seen elsewhere, particularly in the also great RSpec book ; he used the let() method. Going back and forth a few times, I understood the the method was assigning the result of the given block to an object named
(追記:2013-05-20) 本記事はJekyllバージョン0.12.0に対応しています。Jekyllバージョン1.0のリリースに伴い、本記事を改訂した記事を投稿しましたので、最新版に対応したチュートリアルについてはそちらを参照下さい。 “Jekyllいつやるの?ジキやルの?今でしょ!” (追記:2012-12-07) 本記事を電子書籍化しました。「Gumroad」を通して100円にて販売しています。内容についての追加・変更はありませんが、メディア向けの調整および誤記の修正を行っています。 電子書籍「30分のチュートリアルでJekyllを理解する」EPUB版 このリンクはGumroadにおける商品購入リンクになっています。クリックすると、オーバーレイ・ウインドウが立ち上がって、この場でクレジットカード決済による購入が可能です。購入にはクレジット情報およびメールアドレスの入力が必要になりま
Herokuはフリーミアムモデルを採用しているので、無料範囲内のHerokuアプリ^1であれば、まったく同じ内容のステージング環境を無料で構築することができる。ということをこの記事で知ってなるほどと思ったので、実際にやってみた。 ステージング用Herokuアプリの追加 既にHerokuアプリがあるGitリポジトリに、ステージング環境用にもう一つHerokuアプリを追加する。追加方法は、普通にheroku createするだけ。 $ heroku create heroku-hello-world-staging --remote staging 上記のように--remoteオプションを指定すると、その名前でremote先を追加できる。 $ git remote -v heroku git@heroku.com:heroku-hello-world.git (fetch) heroku gi
「HerokuでWebアプリ開発を始めるなら知っておきたいこと」シリーズの第6回では、Herokuなら簡単に作れる動作チェック用のサイト「ステージング環境」について書きます。このシリーズのまとめページはこちら。 動作チェック用サイトを簡単に作れる これは前回の環境変数ENVの便利さと、第1回で紹介したHerokuの無料スペックの高さを掛け合わせた使い方ですが、Herokuアプリを作るなら断然オススメの方法です。 業界用語(?)ではステージング環境と言うのですが、サイト制作やアプリ制作に携わっている人ならほとんどがやったことのある本番に近い状態で動作チェックするための環境のことです。Webアプリにおいて特にステージング環境と言った場合は、限りなく本番に近いサイトのことを指します。 Herokuは、この“限りなく本番に近い”動作チェック用の別サイトを構築するのにとても適しています。その主な理由
I was passed a long running legacy ruby program, which has numerous occurrences of begin #dosomething rescue Exception => e #halt the exception's progress end throughout it. Without tracking down every single possible exception these each could be handling (at least not immediately), I'd still like to be able to shut it down at times with CtrlC. And I'd like to do so in a way which only adds to th
I have a view spec that was passing but is broken now that pagination (via Kaminari gem) has been added to the view. I'm still trying to get my head around RSpec's syntax...so looking for help in getting this to pass as the page works fine in the browser. I'm aware that many people frown on view specs for being brittle (probably for reasons like this) but I still would like to keep this one passin
Stack Overflow for Teams is now called Stack Internal. Bring the best of human thought and AI automation together at your work. Try for free Learn more
これとこれの続き。この後、もう少し調査して、Resqueを実際のシステムの一部で使い始めてみたのでその感想とメモ。 前回までのあらすじ Resqueはバックグラウンドでジョブの実行をするもので、かなりの大規模サイトでかつ更新系の処理が多そうなシステムであるGithubで開発され使われている。よくある使い方としては、「Web UIを軽く見せるため、処理の依頼だけを受け付け、実際の処理はバックグラウンドで実行」「バッチ処理などで、大量のJobをQueueに突っ込んでおいて、(複数の)workerで並列で効率よく処理」などがある。 不安なところ Resqueの大きな特徴は、QueueをRDBMSではなくRedis上に作るところにある。Redisは、Memcacheのようにシンプルに使え、すべてのデータはメモリ上に展開されるのでとても速く、データはディスク上にも永続化されるので、何かあったときにも
前回 の続き(だがあんまり書くことなかった) Railsとの話の前に、前回書き忘れてしまったのだけど、resqueには、1日1回実行する、と言ったスケジューリングの機能はない。スケジュール機能は別のそういう機能を持ったソフトウェアに任せる(代表例: cron)か、自分で作る必要がある。また、resque-scheduler といresqueのプラグインタイプの物もある。現在どの方法が良さそうかか評価中なのでそのうち書く。 さて、Railsとの連携だが、resque自体がそもそもGitHubのRailsシステム用に作られたという経緯から、もちろん非常に親和性が高い。たとえば、worker毎にRailsのEnvironmentが一回ロードされるだけなので余計な資源を食わなかったり、RailsアプリのWeb UIから非同期な処理の扱いなども簡単にできる。 さて、インストール ./script/p
そこそこの規模のWebシステムになってくるとバックグランド処理(batch処理)は欠かせないものになってくる。メールの送信、データの日次、月次、年次処理、削除(フラグ)データのpurgeやバックアップ、等々いろいろな物が出てくる。 現在はBackgrounDRbを使っているが、いろいろといまいちなので今回Resqueを評価してみた。ちょっと触った段階での第一印象をメモ。 まず、バッチ処理系で評価のポイントになってくる部分はなんだろうかと考えてみると、なんと言っても見通しのよさと異常系の処理だと思う。画面系と違い、バッチ処理は「見えにくい」ところで実行されるので、その二つが特に大事になってくる。「知らないうちに止まっていました」では困るのがバッチ処理。 たとえば、 異常時の処理無視?管理者に通知?リトライ? 復旧処理タスクの削除(問題を修復後)リトライ 状態の監視いくつのJobが残っているか
Well, it had to happen some day. Pour one out for our dearly beloved Ruby 1.8.7. And if you’re still using 1.8.7 for your Rails app, pour yourself a cup of coffee—Rails 4.0 will run strictly on Ruby 1.9. The Rails master branch was moved to 4.0 two months ago, almost 6 years to the date of the announcement of Rails 1.0, and the primary cited reason for doing so is to get everyone using Rails on Ru
新年おめでとうございます。2009年の最初のネタはプログラミングのネタにすることにしました。 Rubyについてのステキなエントリーがあったので、紹介します。 no title 私は翻訳能力がないばかりか、リーディング能力も貧相です。ぜひ、原文を読んでみてください。 はじめに Rubyのblock、Proc、lambdaはパワフルですが、解りにくい。Rubyはクロージャを使う方法が4つあって、それぞれチョットずつ違います。ここでは、そのへんを解説したいと思います。 Block もっとも簡単で、かつRubyっぽいと言えば、Blockですね。 array = [1, 2, 3, 4] array.collect! do |n| n ** 2 end puts array.inspect # => [1, 4, 9, 16] 何が起こっているか? まず、block付きでArrayの"collect
平素よりQA@ITをご利用いただき、誠にありがとうございます。 QA@ITは「質問や回答を『共有』し『編集』していくことでベストなQAを蓄積できる、ITエンジニアのための問題解決コミュニティー」として約7年間運営をしてきました。これまでサービスを続けることができたのは、QA@ITのコンセプトに共感をいただき、適切な質問や回答をお寄せいただいた皆さまのご支援があったからこそと考えております。重ねて御礼申し上げます。 しかしながら、エンジニアの情報入手方法の多様化やQAサービス市場の状況、@ITの今後のメディア運営方針などを検討した結果、2020年2月28日(金)15:00をもちましてQA@ITのサービスを終了することにしました。 これまでご利用をいただきました皆さまには残念なお知らせとなり、誠に心苦しく思っております。何とぞ、ご理解をいただけますと幸いです。 QA@ITの7年間で皆さまの知識
以前、CSRFについてのエントリを書きました。 CSRFについて - おもしろWEBサービス開発日記 上記エントリではCSRFの概念について書きましたが、もう少しつっこんで調べる必要が出てきました。調べたことを書いてゆきます。 基礎 application.rb(ないし適当なController)にprotect_from_forgeryメソッドを定義すれば、railsが自動的にCSRF対策をしてくれます。というか、デフォルトでapplication.rbに下記のように書いてあるので、特に何もせずともCSRF対策はバッチリなのです。 protect_from_forgery # :secret => '8ff3ed33f86a431662d8dfe255acdb4a' railsは、get以外の動詞のリンクに、authenticity_tokenというパラメータを自動的に付け加えます。ge
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く