タグ

Rubyに関するKiskeのブックマーク (204)

  • サンプルコードでわかる!Ruby 2.4の新機能と変更点 - Qiita

    はじめに 2016年9月にRuby 2.4のpreview2が、11月にpreview3が、12月11日にrc1がリリースされました(参考1、参考2、参考3)。 僕は早速インストールして新機能を試してみましたが、みなさんはいかがでしょうか? というわけで、この記事では僕が実際に動かして確認したRuby 2.4の変更点や新機能をサンプルコード付きでまとめます。 この記事は大きく分けて次のセクションに分かれています。 文法上の変更点 後方互換性が失われる変更点 パフォーマンス改善 オブジェクト全般の新機能 主に数値に関連する新機能 主に文字列・正規表現に関連する新機能 主に配列・ハッシュに関連する新機能 ディレクトリやファイルに関連する新機能 その他の標準ライブラリに関連する新機能 スレッドに関連する新機能 なお、Ruby 2.4は2016年12月25日にリリースされる予定です。 記事はrc

    サンプルコードでわかる!Ruby 2.4の新機能と変更点 - Qiita
    Kiske
    Kiske 2016/12/20
  • 俺が悪かった。素直に間違いを認めるから、もうサービスクラスとか作るのは止めてくれ - Qiita

    ちなみに、最初に結論だけ言っておくと、まずSandi Metzの「オブジェクト指向設計実践ガイド」を読め、という話です それだけで終わってしまいたい気持ちはあるが、不親切過ぎるしもうちょっとRails向けの話を書こうと思う。 ただ言いたいことは、よく分かってないのに使うのは止めろということ。 自分もで書いたりした手前、それが参考にされた結果なのかもしれないが、世の中には当に酷いクラスが存在するもので、雑にサンプルで書くと以下の様な感じのコードが存在したりする。 class HogehogeService # Hogehogeはモデル名まんま def process(hogehoge, option_a: nil, option_b: nil, option_c: false) history = hogehoge.histories.last unless hogehoge.activ

    俺が悪かった。素直に間違いを認めるから、もうサービスクラスとか作るのは止めてくれ - Qiita
    Kiske
    Kiske 2016/12/16
    “まずSandi Metzの「オブジェクト思考設計実践ガイド」を読め”
  • rubyにコントリビュートする方法 - kaeruspoon

    rubyのバグらしき挙動を見つけたのでパッチを書いて送ってみたら、すぐに取り込んでもらえました。 https://bugs.ruby-lang.org/issues/12948 https://github.com/ruby/ruby/commit/f6e77b9d3555c1fbaa8aab1cdc0bd6bde95f62c6 rubyGithub上でもPullRequestを受け付けているようなのですが、せっかくの機会なので正規のルートでパッチを送ってみることにしました。 やり方について調べてみたことを、次の機会のためにここに記しておきます。 バグの発見 Loggerがおかしな挙動をしていることを同僚の方が発見したので調べてみました。 ずっと昔にrubyのバージョンを2.2系にあげたのですが、そのタイミングからログファイルがローテーションされていないようなのです。 すでに存在している

    rubyにコントリビュートする方法 - kaeruspoon
    Kiske
    Kiske 2016/11/22
  • MERY EC におけるセッション管理と JWT - peroli Developer's Blog

    2016 - 08 - 26 MERY EC におけるセッション管理と JWT Back-End 設計 Ruby list Tweet こんにちは。 MERY のサーバーサイドエンジニアの @saidie です。 MERY では、女の子が知りたい最新の情報や欲しくなるファッションアイテムを、記事という形式を通して毎日届けています。 そして、ここ一年弱の間、ユーザが欲しいと思ったアイテムをそのまま手軽に MERY 上で買うことのできる、EC の システム開発 を進めてきました。 この記事では、MERY の EC システムを開発するにあたって、既存の MERY 会員のログインセッションと EC において必要とされる新たなセッションに関する設計の裏側と、セッション情報のやり取りに JWT ( JSON Web Token) を使う取り組みについてご紹介したいと思います。 MERY の EC セッ

    MERY EC におけるセッション管理と JWT - peroli Developer's Blog
    Kiske
    Kiske 2016/10/10
    “devise にはもう近づきたくない”
  • Getting Started with Minitest

    Minitest is a beautifully made test suite for writing tests to verify your expectations from your code base. According to the website, it "provides a complete suite of testing facilities supporting TDD, BDD, mocking, and benchmarking." The way it's implemented is rather straightforward, as you can see in creator Ryan Davis' walk-through of Minitest's design/implementation. Fundamentally, it has be

    Getting Started with Minitest
    Kiske
    Kiske 2016/10/03
  • Ruby の Enumerable#sum - tmtms のメモ

    「最近のruby-core (2016年7月)」に次のような記述がありました。 Enumerable#sum というメソッドが追加されており、特定の場合(浮動小数点数の配列とか)には誤差が累積しないアルゴリズムが採用されています。 Ruby 2.4 に Enumerable#sum が追加されたのは知ってましたが、「誤差が累積しない」というのは知りませんでした。 というか、元々誤差が累積しない加算の目的で追加されたものだったのですね(最近のruby-core (2016年3月))。単純に 「#inject(:+)」にわかりやすい名前をつけただけなのかと思ってました。 簡単に試してみます。浮動小数点演算で、0.1を10個足すと1.0にならないというのはよく知られていますね。 > 0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1 => 0.999999999999

    Ruby の Enumerable#sum - tmtms のメモ
    Kiske
    Kiske 2016/10/03
  • RubyKaigi2016: Ruby Reference Manual 2016 Autumn #rubykaigi - 2016-09-16 - ククログ

    株式会社クリアコード > ククログ > RubyKaigi2016: Ruby Reference Manual 2016 Autumn #rubykaigi スライド(Rabbit Slide Show) スライド(SlideShare) 話の流れは以下の通りです。 「るりま」と「るびま」の違いについて 簡単に歴史をおさらい 10周年だった これまでのコントリビューター数を紹介 これからやりたいことを紹介 Ruby2.4.0 対応 EPUB RDoc 「るりま」と「るびま」の違いについて 「るりま」と「るびま」の違いについて確認しました。 一文字違いですが、どちらも一般社団法人 日Rubyの会のサポートを受けて活動しています。 簡単に歴史をおさらい 2006-08-27 にプロジェクトが始まりました 初期は青木さんの個人のサーバーでホスティングされていました その後、いつだったか忘れま

    RubyKaigi2016: Ruby Reference Manual 2016 Autumn #rubykaigi - 2016-09-16 - ククログ
    Kiske
    Kiske 2016/09/22
  • Ruby超入門(前編)

    こんにちは。 この連載では、ちょっと変わったRuby入門を書いていきます。 想定読者は、Rubyを学びたいプログラミング初心者です。 Ruby以外の言語でプログラミングしたことがあると理解がはかどると思いますが、 Rubyを知らなくてもわかるように、なるべく丁寧に説明していくつもりです。 Rubyをある程度知っている読者には、最初の数回は退屈かもしれませんが、 回を重ねていくにつれ、より深くRubyを知ることができるはずです。 Rubyとは? Rubyは「プログラミング言語」です。 プログラミング言語とは、コンピュータにやらせたい仕事を書くための言語です。 つまり、Rubyを覚えて、Rubyでコンピュータへの指示を書けば、 コンピュータはその指示を実行してくれます。 この指示書のことを「プログラム」と言い、特にRubyで書かれたプログラムを「Rubyプログラム」と言います。 ところで、Ru

    Ruby超入門(前編)
    Kiske
    Kiske 2016/09/15
  • 言語処理100本ノックをRubyでやったメモ

    Interpretable Machine Learning 6.3 - Prototypes and Criticisms

    言語処理100本ノックをRubyでやったメモ
    Kiske
    Kiske 2016/09/13
  • bundler 1.13.0でGemfileに`:github` ショートハンドを使用するとwarningが出る | 日々雑記

    先日bundler 1.13.0がリリースされたようで、早速試したみたところ、Gemfileに:githubショートハンドを使用しているとwarningが出るようになっていました。 # Gemfile # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', github: 'rails/rails' # Use sqlite3 as the database for Active Record gem 'sqlite3' # Use Puma as the app server gem 'puma', '~> 3.0' # Use SCSS for stylesheets gem 'sass-rails', github: "rails/sass-rails" 例えば上記のようなGemfile

    bundler 1.13.0でGemfileに`:github` ショートハンドを使用するとwarningが出る | 日々雑記
    Kiske
    Kiske 2016/09/12
  • 書き捨てのRubyスクリプトをgemにするときの育て方の一例 - 2016-09-08 - ククログ

    Rubyでちょっとしたこと、例えばテキスト処理などをしたくてスクリプトを書くことはよくあります。そんなスクリプトは意外と再利用したくなるものです。しかし、作業用ディレクトリに適当なファイル名で保存していたりすると探し出すのは困難ですし、コマンドラインにワンライナーで書いたものだとそもそも残っていないこともあります1。別のPCでの再利用も、それらの保存方法では当然ながら不可能でしょう。 そこで、どこか整理された場所に保存しておいて再利用に備えたいのですが、保存先が問題になります2。そんなとき、私は次のような理由からgemRubyGems)にしてしまうことにしています。手元ですぐに実行できますし、別の環境へのインストールも簡単です。また、他のRubyプログラムへの組み込みもコピペせずに実現できます。もちろん他の人が使えるようになるというメリットもあるのですが、自分の用途に限っても長い目で見れ

    書き捨てのRubyスクリプトをgemにするときの育て方の一例 - 2016-09-08 - ククログ
    Kiske
    Kiske 2016/09/12
  • Recent Advances in HTTP, controlling them using ruby

    Explains issues of HTTP/2, how they are to be solved, what can be done to control the protocol using ruby.Read less

    Recent Advances in HTTP, controlling them using ruby
  • Ruby on Rails アプリケーションにおけるモンキーパッチの当て方 - クックパッド開発者ブログ

    技術部の牧です。 今日はモンキーパッチの話をします。 モンキーパッチとは何か そもそもモンキーパッチ (monkey patch) とは何でしょうか? 端的に言えば、言語の組み込みクラスやライブラリ、その他外部ライブラリの挙動を、動的に拡張する仕組みをモンキーパッチと呼びます。 *1 例えば、Ruby のモンキーパッチのすごく単純な例として以下のようなものがあります。 module NilClassExtension def empty? true end end NilClass.prepend(NilClassExtension) インスタンスが空であるかどうかを判定するメソッドとしての #empty? は String や Array など様々なクラスに存在しますが、 nil を唯一のインスタンスとする NilClass には来は存在しません。 このモンキーパッチを導入することで

    Ruby on Rails アプリケーションにおけるモンキーパッチの当て方 - クックパッド開発者ブログ
  • Minitest Quick Reference

    UPDATE: I’ve added a new section on stubbing with MiniTest and a few helpful comments to the code samples. MiniTest, as the name suggests, is a small and fast unit testing framework. Shipped with Ruby 1.9, MiniTest supports a complete suite of testing capabilities such as TDD, BDD, mocking, and benchmarking. This quick reference aims to demonstrate MiniTest’s main concepts and provide real world e

  • Ruby 2.4.0 で導入予定の Integer Unification まとめ, 夏休みで北海道へ - HsbtDiary(2016-08-29)

    Ruby 2.4.0 で導入予定の Integer Unification まとめ Ruby 2.4.0 で導入が予定されている Integer Unification が与えるであろう Ruby アプリケーションへの影響をまとめておく。 率直には rb_cFixnum や rb_cBignum が 2.4 からは見えなくなるので、それらを参照しているような native gem が対応していなければビルドできないためアプリケーションが動かなくなる。じゃあ、対応したバージョンに全てバージョンアップすればいいじゃん、という話なのだけど bundler が解決してくれる dependency 沼と絡み合って、単純には解決できずに 8 月現在は厳しい状態になっている。 json は Rubybundle している�バージョンですでに Integer Unification 対応がなされ

    Ruby 2.4.0 で導入予定の Integer Unification まとめ, 夏休みで北海道へ - HsbtDiary(2016-08-29)
    Kiske
    Kiske 2016/08/29
    ほんとつらそう
  • Ruby の Timeout の仕組み - tmtms のメモ

    Ruby で長い時間掛かるかも知れない処理のタイムアウトを行うにはこんな感じにします。 require 'timeout' begin Timeout.timeout(3) do # 3秒でタイムアウト hoge # 何かの処理 end rescue Timeout::Error puts 'なげーよ' # タイムアウト発生時の処理 end Timeout.timeout はブロック開始時にスレッドを作成し、そのスレッドで指定された秒数だけ sleep して、sleep から復帰してもまだブロックが終わってなければ作成元のスレッドに対して Timeout::Error 例外を発生させます。 指定時間以内に処理が終わる場合: timeout(X) │ スレッド作成 ─┐ │ │ ブロック実行 sleep X │ │ スレッドkill→ 🕱 │ timeout復帰 指定時間以内に処理が終わら

    Ruby の Timeout の仕組み - tmtms のメモ
    Kiske
    Kiske 2016/08/26
  • Rubyist Magazine - スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)

    『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。 Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号 Rubyist Magazine 0063 号 バックナンバー Rubyist Magazine 0063 号 Rubyist Magazine 0062 号 Kaigi on Rails 特集号 RubyKaigi Takeout 2020 特集号 Rubyist Magazine 0061 号 Rubyist Magazine 0060 号 RubyKaigi 2019 直前特集号 Rubyist Magazine 0059 号 Rubyist

    Kiske
    Kiske 2016/08/24
  • Ruby で高速なプログラムを書く

    2. 自己紹介:遠藤侑介 • Ruby コミッタ(2008年~) – Rubyのテストを増強した – コードカバレッジ測定機能を 実装した – キーワード引数を実装した – Ruby 2.0 リリースマネージャ だった – 最近は何もしてない 2 ’06下 ’07上 ’07下 ’08上 60 70 80 90 100 coverage(%) 70% 85% C0カバレッジ遷移 3. と私 • 立ち上げの時に @chezou さんに相談を受けた • 初期に数回だけ参加した • Kawasaki.rb #005 (2013-10-23)で発表した – 以上(すみません) • ちなみに Kawasaki.rb #005 で発表したものは 3 4. eval$s=%q(eval(%w(B=92.chr;N=10.chr;n=0;e=->(s){Q[Q[s,B],?"].gsub(N,B+?n)};

    Ruby で高速なプログラムを書く
    Kiske
    Kiske 2016/08/23
  • Rails高速化戦略 / Speeding Up Rails

    Roppongi.rb#1( http://roppongirb.connpass.com/event/33502/ ) での発表スライドです。 - 発表内容をまとめたブログ記事はこちら: http://blog.toshimaru.net/roppongirb-speeding-up-rails/

    Rails高速化戦略 / Speeding Up Rails
  • Rubyが今のPythonの地位にいない理由

    _ Rubyが今のPythonの地位にいない理由 歴史のことなんぞなんも知らんけど、「技術的には今のPythonの地位はRubyでもよかったのに、そうならなかった」のが何故か、その理由を書いてみよう。僕はRuby歴史なんて知らないし、以下の文章は全部、まるで見てきたかのように書いてますが、適当に書いたくせに何故か断言口調になっている怪文書の類いです。 https://twitter.com/mametter/status/741950239662170112 まめさんの書いた理由リストはどれも関係ない。いやカスってるけど。難しいというのも関係ない。 僕がRubyを知ったころ…最初に書いた通りRuby歴史なんて知らないので、別に早くもないわけだけど…Rubyというのは全く使われていない言語だった。どっかの好き者がPerlの替わりに単純な処理に使って、「ウフ、美しくかけた、グフッ」とかつぶ

    Kiske
    Kiske 2016/06/16
    “Rubyが今のPython地位を確立できてない理由は「なんかキモそうだから」”