方針 Rubyを知っている前提です(前回の勉強会の資料 http://dev.ariel-networks.com/articles/workshop/ruby/) RDBの基礎知識が前提です なるべく手を動かして目に見える形で説明を進めます Ruby on Rails(以下、Rails)全体は巨大なので、ActiveRecord(ORM層)に話を限定します(Web層は次回) Webから切り離してirb or コマンドラインでActiveRecordを使います
やけに時間が掛かるテストがあるなと思ったらメソッドにsleepが入ってました。 スタブ化したら早くなるんじゃないかと思って調べてみた。 サンプルコード class User << ActiveRecord::Base def hoge sleep 5 true end end describe "hoge" do it "should be true" do user = User.new user.hoge.should be_true end end テスト実行 rspec user_spec.rb . Finished in 5.01 seconds 1 exampel, 0 failures sleepの5秒がちゃんとかかっております。 最初に考えたのは、sleepはKernelのメソッドだから Kernel.stub(:sleep) でうまくいくんじゃ・・・と思ったら見事反応なし
All Elixir code runs inside lightweight threads of execution (called processes) that are isolated and exchange information via messages: current_process = self() # Spawn an Elixir process (not an operating system one!) spawn_link(fn -> send(current_process, {:msg, "hello world"}) end) # Block until the message is received receive do {:msg, contents} -> IO.puts(contents) end Due to their lightweigh
{ } と do end の違い - gan2 の Ruby 勉強日記 require 'benchmark' puts Benchmark::CAPTION puts Benchmark.measure { a = [1, 2, 3] a.replace [4, 5, 6] } このように { } を使うのは OK なのに { } を do end に変えると require 'benchmark' puts Benchmark::CAPTION puts Benchmark.measure do a = [1, 2, 3] a.replace [4, 5, 6] end `measure': no block given (LocalJumpError) ってエラーが出る。 そう、ふたつのブロック構文{}とdo〜endの優先順位の違い。 「puts Benchmark.measure
Standard Library English | Win32API | abbrev | base64 | benchmark | bigdecimal | cgi | cmath | continuation | coverage | csv | curses | date | dbm | debug | delegate | digest | dl | drb | e2mmap | enumerator | enumerator | erb | etc | expect | fcntl | fiber | fileutils | find | forwardable | gdbm | getoptlong | gserver | iconv | io/nonblock | io/wait | ipaddr |
Steve Yegge / 青木靖 訳 2004年9月 これは駆け足の言語案内だ — Amazon Developers Journalのために今月書いていたのだが、どうもこれを見苦しくないようにする方法を見つけられなかった・・・。 ひとつには、私はどうも粗野で口汚くなりがちで、オフィシャルな趣のあるAmazonの出版物に載せるのは不適切に思えた。それでかわりに誰も読まない自分のブログに押し込めてしまうことにした。読んでるのはあなたくらいのものだよ。どうも! もうひとつ言うと、これは本当に書きかけのものであり、そこかしこの断片を集めたものでしかない。全然磨き上げられていない。これもブログエントリにする理由になっている。ブログなら別に良質である必要も完全である必要もない。単に私が今日考えたことというだけのものだ。ではお楽しみを! この駆け足の案内では、C、C++、Lisp、Java、Perl
Perl での print debug の方法の紹介がブーム(?)だったので、自分がよく行ってる Ruby での debug 方法7つについて書いてみます。 p ご存じの人も多い Kernel#p メソッド。これを使うとオブジェクトの内容を見やすい形で出力してくれます。 >> p ({:foobar => :baz}) {:foobar=>:baz}Object#inspect を使うと、p で出力するときと同じ文字列を String として取得できます。 >> puts ({:foobar => :baz}).inspect {:foobar=>:baz}初心者の頃この p での出力を使う方法がわからなくて困った記憶が…。 pp pp というライブラリを使うと、p より、より見やすい形式で出力してくれます。たとえば >> a = Array.new(10) { {:foobar => :
_ 新PC GitHubスポンサーの収入がありそうな気がしたので(注文時点では未取得)、デスクトップPCを購入することにした。 意外かもしれないが、初デスクトップ。今回はサイコムというところで注文した。自作という選択肢もあったが、自分の不器用さをよく承知しているので(最近では液漏れで止まった時計を修理しようと分解して、再起不能にした)、BTOに。スペックは、 Ryzen9 3900 (12 core) 64GB memory 1TB SSD (M.2) Radeon RX560 で、先週届いて、早速Linux (Mint XFCE)をインストールしたのだが、しばらく使っていると突然落ちる。どうもグラフィック関係らしく、sshでログインして使っていると落ちない。GPUのベンチマークプログラムglmark2を実行すると即死。 で、購入先に相談したら、グラフィックボードの不良の可能性がありますね
1時間でツイッターサービスを作ろう! | KRAY Inc 試してみました。 github公開ソースを見てみると twitter_auth.yaml oauth_consumer_key: <%= ENV['OAUTH_CONSUMER_KEY'] %> oauth_consumer_secret: <%= ENV['OAUTH_CONSUMER_SECRET'] %> となっていました。 おお、これは使えそうだなと思って、 同じようにして、config/initializers 下に gitignore 対象の環境変数読み込みファイル 作ってやってみましたが、うまくいきません。 #config/initializers/env.rb ENV['OAUTH_CONSUMER_KEY'] = "hogehoge" ENV['OAUTH_CONSUMER_SECRET'] = "fugafua
私はRSpecでテストをこんな感じで書いてるという良エントリがあったので少し便乗してみます。 まずは上記の記事を。 最終的なrspecについてですが、私の場合は以下のような感じにしてます。 といっても、前回もかいたように試行錯誤の毎日です。 # -*- coding: utf-8 -*- require_relative 'user' describe User do describe "#admin?" do subject { user.admin? } let(:user) { User.new(role: role) } context "管理者の場合" do let(:role) { 'admin' } it { should be_true } end context "一般ユーザの場合" do let(:role) { nil } it { should_not be_tru
The RSpec Book: Behaviour Driven Development With RSpec, Cucumber, and Friends (The Facets of Ruby Series) この本、昨日のas_null_objectメソッドに続いて、letメソッドという便利なメソッドを紹介してくれた。 RSpecを書いていると、昨日の例もそうだが、beforeやafterを使うため、インスタンス変数の出番が多くなり、「@(アットマーク)」だらけになって気持ち悪くなる。 昨日の例↓ require 'my_class' describe MyClass do describe "は、runメソッド実行時に、" do before(:each) { @obj = mock.as_null_object } it "初期化時に渡したオブジェクトのpre_execメソッドを
和田 卓人(@t_wada) 作『RSpec の入門とその一歩先へ、第2イテレーション』はクリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスで提供されています。 #coffee.rb の写経会に招かれた(というよりは押しかけた?)ので、先日の RSpec チュートリアルの続きを記します。このエントリは写経会に参加しながらのライブ更新でした。 (更新) 第3イテレーションも書きました。続きに興味ある方はご覧下さい 前回終了時点のコードと実行結果 前回終了時点でのコードを以下に記します。 message_filter.rb class MessageFilter def initialize(word) @word = word end def detect?(text) text.include?(@word) end end message_filter_spec.rb r
このエントリでは,Ruby on Rails (以下 Rails)の ActiveRecord モデルテストについて,1) どこの何をテストすればよいか,2) どのようにテストを書けばよいか,のガイドラインを示します.このガイドラインは Rails 公式のものではなく,id:passingloop が使っている私的なものです.疑問・質問・批判・間違いの指摘はページ下部のコメント欄までお願いします. はじめに Rails は TDD/BDD サポートが充実した Web アプリケーション開発フレームワークです.Rails で使える Test::Unit や RSpec などといったテスティングフレームワークの使い方に関する解説も豊富にあります.しかし,「どこをどうテストすればよいのか」についての解説は,「使い方」の解説と比較して少ないように思います.もっとも,テスト一般についてどう書くかはアプ
* RSpecの構文 見本は、これ http://github.com/mitim/tddbc-lrucache/blob/master/lru_cache_spec.rb ** 慣習 RSpec用のテストとして書くテストコードは、[テスト対象のファイル]_spec.rb という名前でつくる。 ** なにはなくともrequire require 'lru_cache' テスト対象のファイルを読み込ませる。 ちなみに、RSpecの何かをrequireする必要なない。 ** まずは基本 describe do end で、一番外側のブロックを記述する。 通常は、次のようにテスト対象のクラスを宣言しておく。 describe LRUCache do end また、一緒に説明を付けることも可能。 describe LRUCache, "を初期化する場合" do end もちろん、説明だけにすること
仕事でRailsを使うことになり、APサーバの選定にあたってPuma, Unicorn, Passenger の比較検討を行いました。方法としてはJMeterでAPサーバにデプロイしたRailsアプリケーションに対して負荷をかけられるだけかけるというやり方です。 試験環境 試験の環境としては下記の構成です。 Ruby2.0, Rails4 アプリケーションサーバ:1台(VM) JMeterサーバ:3台(VM) JMeterクライアント:1台(通常の作業PC) サーバ構成 hostanameCPU仮想コア数(Per CPU)MemoryDisk用途 loadtest01248192MB20GBAPサーバ loadtest02114096MB20GBJMeterサーバ loadtest03114096MB20GBJMeterサーバ loadtest04114096MB20GBJMeterサーバ
RubyMotion Advent Calendar 2013 に何か書こう、ということでエントリ。 ご存知のように iPhone アプリの HBFav は RubyMotion で作っています。Objective-C ではなく。以前は Titanium Mobile で作っていましたが、去年にバージョン2として作り直すにあたって RubyMotion に移行しました。 RubyMotion に関しては以前、以下のエントリで概要を説明しています。 RubyMotion - naoyaのはてなダイアリー それから、今年 5月に開催した RubyMotion カンファレンスのスライドなどもあります。 実践RubyMotion - Speaker Deck RubyMotion が発表されたのは 2012 年の5月 とかで、それからずっと使い続けているので1年半近くが経ったことになります。App
WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。 「今週の話題」を除くと、すごく久しぶりの投稿になってしまいました。いろいろあってなかなか時間が取れなかったのですが、やっと復活できそうです。ネタはだいぶ溜まっているので、頑張って書いていこうと思います。 さて、本日ご紹介するのは Rails アプリケーションで配列構造のデータを扱うフォームに役立つ Tips です。 Rails は特殊な name 属性を指定するこ
Active Record Active Record objects don’t specify their attributes directly, but rather infer them from the table definition with which they’re linked. Adding, removing, and changing attributes and their type is done directly in the database. Any change is instantly reflected in the Active Record objects. The mapping that binds a given Active Record class to a certain database table will happen au
和田 卓人(@t_wada) 作『RSpec の入門とその一歩先へ』はクリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスで提供されています。 東京 Ruby 会議 03 の RSpec ワークショップの資料です。このワークショップでは参加者の方に「写経」(コードを書き写すこと)をして貰い、TDD/BDD と RSpec を同時に学べるように都度説明を入れるかたちで行いました。 第2イテレーションも書きました。続きに興味ある方はご覧下さい (更新) 第3イテレーションも書きました。続きに興味ある方はご覧下さい 1st iteration favotter の みたいな NG ワードのフィルタリング機能を RSpec で作りましょう。まずは NG ワードの検出機能を作成します。 このイテレーションでは最初ベタな形のテストコードと実装を書き、だんだんとそのコードを洗練させてゆきま
はじめに Anemoneはrubyで作られたWebクローラフレームワークです。実行した環境は Max OS X 10.6 です。 特徴は The multi-threaded design makes Anemone fast. The API makes it simple. And the expressiveness of Ruby makes it powerful です。 意訳するとマルチスレッド対応でAPIがシンプルなとことが売りという感じでしょうか。 クライアントのプログラムがシンプルに記述出来てCLIで実行出来るので他の(言語の)プログラムとの連携が取りやすい所が気に入り試してみる事にしました。 紹介記事:クローラーを作るためのフレームワーク「Anemone」 Anemoneのインストール $ gem install anemone lxml,lxslt2 関連でエラーが出
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く