Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
Testing Casual Talks#2に行ってきました。そういえばカバレッジの話がなかったなと思ったので、以前調査した結果を共有したいと思います。 バージョンとか ruby (2.1.5) simplecov (0.9.2) カバレッジ(網羅率)とは よく出てくるカバレッジは下記の3種類でしょう。 命令網羅(C0) テスト内で実行されたメソッドの割合を意味する 分岐網羅(C1) テスト内で実行された分岐の割合を意味する 条件網羅(C2) テスト内で実行された分岐の組み合わせの割合を意味する このようなコードがあったとしましょう。命令網羅の場合、どのような引数であれtestメソッドをテストしていれば、カバレッジは100%になります。分岐網羅の場合、例えばx = 1, y = 10とx = 2, y = 10でtestメソッドを呼び出していれば、カバレッジは100%になります。条件網羅の
プロファイラ好きなモニタの前の皆さんこんにちは。@sonots です。この記事では、Ruby コードのどの行がどのぐらいメモリを消費しているか調べる方法を紹介します。 オブジェクトの数を数える Ruby には ObjectSpace というオブジェクトの情報を集めたり操作したりする module があります。 このモジュールの each_object メソッドを使用すると、RubyVM 上の全てのオブジェクトを取り出すことができます。 このメソッドを使って、以下のようなコードを書くと、実行した地点で、RubyVM 中にどのクラスのオブジェクトが何個存在しているのかカウントできたりするわけです。興味深いですね! ObjectSpace.each_object.inject(Hash.new 0) {|h,o| h[o.class]+=1; h } #=> {Class=>241, Strin
少し前に Ruby 製のバッチ処理を省メモリ化したときの話をメモしておきます。 どのようなバッチ処理だったか 動画共有サイトにアップされた動画がオトナの事情によって削除されることがしばしばあるということは周知のことだと思う。そこで、一定時間おきに配信元サイトをチェックして、もし動画が配信元から削除されていたら、当該動画をこちらのサイトでも動画一覧に表示させないようにする、検索に引っ掛からないようにする、ということをやっていた。 便宜上、そのバッチ処理のことを「(動画の)存在確認くん」と呼ぶ。 oom-killer に殺されていた 彼は非常にデキる子だったが、なんか最近、動画の落とし漏れがあるなーと感じた。原因を調べたら、メモリを食い過ぎて oom-killer に殺されていた。 cat /var/log/messages Apr 6 12:46:45 xxx001 kernel: Out
はじめに チーム内でコーディング規約を作っても,ついクセで違う書き方をしたり気にしない人がいたりして形骸化しがちだと思います.またレビュー時に細かい違いを指摘するのも面倒です.そんなときはrubocopを入れましょう インストール これでrubocopコマンドがインストールされ,rubocop foo.rbとするとチェックできます. コマンドラインからいちいち実行したくないので,各エディタのプラグインをインストール.すると,以下のようにコーディングルールに合わない箇所を指摘してくれます. ここでは「bodyが1行のときは後置ifか,&&や||を使え」と言われています. 設定 rubocopが準拠するコーディング規約は同じ開発者が提案しているものですが,.rubocop.ymlファイルを編集することで自分達に合った形に変更することができます. うちではチームで話し合い,10箇所ぐらい変更しま
Thread safety, connection pooling and a concise DSL for constructing SQL queries and table schemas. Comprehensive ORM layer for mapping records to Ruby objects and handling associated records. Advanced database features such as prepared statements, bound variables, stored procedures, savepoints, two-phase commit, transaction isolation, primary/replica configurations, and database sharding. With ad
概要 Sequel: The Database Toolkit for Ruby https://github.com/jeremyevans/sequel "Sequel has restored my faith in Ruby. It's really amazing. The O/RM I've been hoping for for years." Sequelは、私を改めてRubyに夢中にさせてくれた。本当に驚くべきツールだよ。 これこそ、私が長らく待ち望んでいた O/R Mapper だ。 -- Sam Smoot(DataMapper の開発者) http://sequel.jeremyevans.net/ とあるDBの複数あるテーブルから他のDBの複数のテーブルにデータを移す、データパッチをあてる、みたいな不幸せな境遇がたまにあったりします。でSQLを書くのもアレなのでO
# rbenv install 2.0.0-p195 Downloading yaml-0.1.6.tar.gz... -> https://dqw8nmjcqpjn7.cloudfront.net/7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749 Installing yaml-0.1.6... Installed yaml-0.1.6 to /root/.rbenv/versions/2.0.0-p195 Downloading ruby-2.0.0-p195.tar.bz2... -> https://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.tar.bz2 Installing ruby-2.0.0-p195... WARNING: ruby-2.
Opal is truly amazing and it has taken me in a whole new direction. — @mistergibson from Gitter, on Jan 22 2018 [about Opal 1.7] Fantastic! No failing specs for [isomorfeus](https://github.com/isomorfeus/isomorfeus-project#readme), asset size reduced, performance a tiny bit improved too :+1: — @janbiedermann, on Dec 25th 2022 These guys are great. We have a large production app (www.catprint.com)
また、JQueryではキャメルケースでメソッド名やプロパティ名などが定義されていますが、OpalではRubyの文化に合わせてスネークケースで定義されているようです(*9)。 Nativeなコードの実行 「`(アクサングラーブ)」を使うことで、NativeなJavaScriptのコードを実行することができます(*10)。 `window.open("http://example.com", "example")` windowオブジェクトのほか、前回までに使用したWebSocketやEventSourceなどへアクセスする際にもこの構文を使うことになりますが、「`」の中はJavaScriptの文法になるためOpalを使うメリットが半減してしまいます。 そのようなケースのために、OpalではKernel#Nativeが用意されています。このメソッドを使うことでRubyライクにJavaScrip
この記事はOpal Advent Calendar 2016の一日目の投稿として書いています。 OpalというのはRubyからJavaScriptへソースコードを変換するコンパイラです。 RubyをJavaScriptに!ずいぶんキワモノ感がありますね。私も最初はそう思っていました。 しかし実際に使ってみると、割とRubyとして書けるということが分かりました。 RubyとOpalの違いについては別稿にゆずるとして、わたしがなぜOpalをすすめるのかについて書こうと思います。 一言で言ってしまうと、言語としてJavaScriptが好きでないというのが一番の理由なのですが、それならばAltJSというのも世の中には沢山存在しています。 そういえば数多くあったAltJSたちは今どうしているのでしょうか?私もかつてはRubyistらしくCoffeeScriptなぞ嗜んでいました。 ところが、ES6(
class User < ActiveRecord::Base has_many :items end +----+--------+-----+ | id | name | age | +----+--------+-----+ | 1 | user01 | 10 | | 2 | user02 | 20 | | 3 | user03 | 30 | +----+--------+-----+ class Items < ActiveRecord::Base belongs_to :user end +----+---------+----------------------+-----------+ | id | user_id | content | published | +----+---------+----------------------+-----------+ | 1 |
はじめに 前回に引き続き、またまたDBネタです(^o^) 前回:Railsエンジニアなら最低限これだけは知っておきたいSQLのJOINの動き 今回は、インデックスについてです。インデックスにはいくつか種類がありますが、 RDBで一般的に使われるB-treeインデックスについて書いていきます。 いきなりですが、インデックスは深い!かなり深い!バイカル湖くらい深いです。 ある程度の指針的なものはありますが、インデックスをどう設計するかの見極めは状況によって変わってくるようです。クエリの実行頻度、テーブルサイズ、カーディナリティ(カラム内のデータの種類の多さ)などなど。。 なので今回は、こんなときはインデックス作成を検討した方がいいというパターンだけザッとまとめる感じで行きたいと思います。 なお、今回の記事作成にあたっては、以下の本を参考にさせて頂きました。 そもそも的なところから分かりやすく書
はじめに 先日、アソシエーション関係がある2つのテーブルから、N+1問題を考慮しつつ、特定条件でデータを抽出して表示したいことがありました。 しかし、ActiveRecordの検索メソッド(includes、joins、eager_load、references等)も結構色々あって、 「どれを使えばいいんじゃーー!!」と噴火寸前になりましたので、復習と備忘録を兼ねて整理してみます。 言及しないこと 今回はシンプルに動きだけを確認することを目的としていますので、細かなところは記載しません。 本記事の最後に参考リンクを記載しますので、他の方の記事を参考にしてもらえばと思います。(´ε` ) 環境 ruby ruby 2.3.1p112 (2016-04-26 revision 54768) activerecord (5.0.1) sqlite3 (1.3.13) 前提条件 モデル(テーブル)
Rubyは括弧をつけなくてもメソッドを呼び出せます。メソッド名は普通は英小文字で始まります。ローカル変数も英小文字で始まります。 こんなRubyプログラムを実行すると(ifの条件部で代入しているのはtypoではありません)、 def hoge 123 end p hoge x = 456 if hoge = x p hoge end p hoge こういう出力が得られます。 123 456 456 途中でhogeがメソッド呼び出しから変数参照に変わったのがわかります。 変数宣言後は括弧「()」をつけない場合はメソッド呼び出しではなく変数参照になります。 def hoge 123 end p hoge # hogeメソッド呼び出しなので123 x = 456 if hoge = x # hogeにx(456)を代入。その結果は真なのでif内を実行 p hoge # ここでのhogeはローカル
Rexはリバティフィッシュ株式会社が提供する模擬問題集です。Silver、Goldの模擬問題が合計で300問準備されており、すべて無料で利用できます。 Githubアカウントの取得 現在、RexはGithubアカウントで認証することによって利用することができます GitHubとは・・・。 ソースコード管理のWebサービスです。多くのRuby関連のプロジェクトはこのサイトで管理されています。無料で登録、利用ができます。 Sign up for GitHubをクリックしてユーザーを作成する ユーザー作成後はRexのトップページに戻りJoin with your GitHub accountのボタンをクリック 以下のようなGithubでの認証画面にリンクされますので、先ほど作ったアカウントでSign inします。 認証に成功すると、Rexのトップページが表示されます。Silver、Goldの模擬
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く