タグ

Rubyに関するmoronbeeのブックマーク (83)

  • Rubyのyieldって結局何なの?|よしだ

    yield って、いまいち分かりにくいですよね。。 この記事は Ruby の yield に関して、 わからない⇒調べる⇒忘れる⇒調べる⇒忘れる⇒… のエンドレスループから抜け出すために、自分なりにまとめたものです。 ブロックいきなり yield じゃないやん!という感じですが、我慢して見てみてください。 じつは、Ruby のメソッドはすべて「ブロック」を引数にすることができます。 def hogehoge( x ) return x + 2 end p hogehoge( 3 ) p hogehoge( 5 ){ p "foo" }ブロックってのは、{ p "foo" } みたいに "{" と "}" に囲まれたやつね。"do" ~ "end" でもいいみたいだけど。 これを実行すると、 5 7となります。{ p "foo" } はまるっきりシカトです。 (・∀・) …が、以下のようにす

    Rubyのyieldって結局何なの?|よしだ
  • ご意見募集: Rubyに名前空間サポート的なものが欲しいという話 - たごもりすメモ

    LFAを書いたときの話にあるKernel#loadの第2引数で名前空間的なものを作れるんだけど、loadした先のファイルでrequireされてたらダメなんだよね、という話の続き。ダメなんだよねー、で終わってたんだけどRubyKaigi2023で@shioyamaさんのMultiverse Rubyを聞いて、ここに仲間がいた!!! ってなって、さらにそのあとバーで飲みながらやろうやろうって盛り上がったので、なんか色々考えている。 RubyKaigiの話は別途書くとして、いまはとりあえずこっち。 後半に、こんなものが欲しい、という話、および読んだ人の意見が欲しいということが書いてあるので、このあたりに何か思うところがある人はぜひ読んでみてください。どっちかというと、自分以外のRubyユーザがどう考えているのかを、bugsに出す前にまず知りたいなと思っています。 動機 Rubyにはみなさんご存知

    ご意見募集: Rubyに名前空間サポート的なものが欲しいという話 - たごもりすメモ
  • Ruby の &. と #try の違い - Secret Garden(Instrumental)

    Ruby 2.3 で Safe Navigation Operator(&.)という新しい演算子が追加されました。 これは obj&.to_i という風にメソッド呼び出しのように使い、レシーバが nil の場合に nil を返します。 10&.to_s # => "10" nil&.to_s # nil このように nil チェックすることなく安全にメソッドを呼び出すことが出来ます。 #try Rails の ActiveSupport にも #try という似たようなメソッドが定義されています。 これはレシーバがメソッドが呼びだせる場合にそのメソッドを呼び出すというような処理になります。 また、レシーバが nil の場合は必ず nil を返します。 10.try(:to_s) # => "10" nil.try(:to_s) # => nil &. と #try の違い 両方とも『レシー

    Ruby の &. と #try の違い - Secret Garden(Instrumental)
    moronbee
    moronbee 2020/07/31
    &. と #try の違い
  • 【Ruby】例外処理 - Qiita

    何かを学ぼうとする時、ただを読み進めても、実際にそれを必要とするシーンに局面しないと実感は湧かないということで、軽く読み流す程度でいいと言われたことがあります。自分は人の書いたコードを何となく理解する程度しかできません。そんな時、これが分かる人は楽しいだろうなぁと思うのです。なので、そう言われてもちゃんと理解したい性格ゆえに、こうしてまとめています。 この例外やエラーについては少し難しく感じました。記事の一番最後に書きましたが、特に公式ドキュメントにあった raise のサンプル文法では Exception と error_type の違いを理解するのは時間がかかりました。 制御構造 raise 頭の中では何とか支えて立っているものが崩れてしまいそうな状態です。 間違いなどありましたらコメントをお願いします。 begin ~ rescue ~ end プログラムの処理が期待通りにいかない

    【Ruby】例外処理 - Qiita
  • begin~rescue~ensureとraiseを利用した例外処理の流れと捕捉について - Qiita

    EffectiveRubyの項目23「できる限りもっとも対象の狭い例外を処理できるようにしよう」を読んでいるときに、Rubyにおける例外処理の流れと捕捉について気になったためまとめます。 ※else節は例外が発生しなかった場合に実行されるため、今回は対象外とします。 Rubyにおける例外処理の基(begin~rescue~end) まずは、Rubyにおける簡単な例外処理について。 サンプルコードでは、適当なクラスとインスタンスメソッドを定義し、0での除算を行うことで例外を発生させ、それを捕捉しています。 class ExceptionTest def test begin # 0での除算でエラーを発生させる 1/0 rescue ZeroDivisionError => ex puts "ZeroDivisionError" end end end obj = ExceptionTest

    begin~rescue~ensureとraiseを利用した例外処理の流れと捕捉について - Qiita
  • 初心者のための本格的なrubyバッチの書き方(slackボット) - Qiita

    概要 みんなー、雑にバッチ書いて遊んでるー!? (ゝω・)v ところでそういったバッチやスクリプトはみんなの好意によって公開してもらっているけど、その大半は走り書きで実際に業務で書くような書き方ではないよね。当然だけど。 だから今日は簡単なバッチを、少し丁寧に書いてみたい。業務レベルではない趣味エンジニアの参考になれば嬉しい。みんなが知っているもっと良い書き方をコメントで教えてくれるともっと嬉しい! バッチの内容 今回書くのは当にとっても簡単なバッチだ。 毎朝ネコの画像を見たくない? 見たいよね! そこでの画像urlをAPIで取得してslackの特定チャンネルへ投稿する。これだけだ。 の画像をAPIで取得するとは何か。そのままの意味での画像を取得するWebAPIがあるんだ。 http://thecatapi.com/ 走り書きとの違い 真面目にバッチを書く、と言っているが複雑なこと

    初心者のための本格的なrubyバッチの書き方(slackボット) - Qiita
  • Awesome Ruby : 素晴しい Ruby のライブラリ・ツール・フレームワーク・ソフトウェアの数々 - Qiita

    元記事: Awesome Ruby Ruby 以外の言語, ソフトウェアについては を参照してください. Awesome List in Qiita Awesome Java Awesome JavaScript Awesome Node.js Awesome Python Awesome Go Awesome Selenium Awesome Appium 抽象化 ActiveInteraction - アプリケーション固有のビジネスロジックを管理します. Cells - Rails のコンポーネントを表示します. Decent Exposure - コントローラに宣言的インタフェースを提供するヘルパー. dry-rb - 共通のタスクをカプセル化するための, 次世代 Ruby ライブラリコレクションです. Interactor - 1回のリクエストで複雑なインタラクションを実行するため

    Awesome Ruby : 素晴しい Ruby のライブラリ・ツール・フレームワーク・ソフトウェアの数々 - Qiita
  • 週刊Railsウォッチ(20170707)Railsの新機能ActiveStorage、高速Rubyフォーマッタrufo gemが超便利、Railscasts全コンテンツが無料公開ほか|TechRacho by BPS株式会社

    2017.07.07 週刊Railsウォッチ(20170707)Railsの新機能ActiveStorage、高速Rubyフォーマッタrufo gemが超便利、Railscasts全コンテンツが無料公開ほか こんにちは、hachi8833です。そういえば今日は七夕でした。 7月最初のRailsウォッチ、いってみましょう。 臨時ニュース: Railsの新機能「ActiveStorage」 リポジトリ: rails/activestorage つい先ほど知りました。まだ詳しく見ていませんが、AWSのS3やGoogle Cloud Storageなどのクラウドを透過的に扱えるようです。DHHのfirst commitもわずか19時間前というスピード公開です。 class User < ApplicationRecord has_one_attached :avatar end user.avat

    週刊Railsウォッチ(20170707)Railsの新機能ActiveStorage、高速Rubyフォーマッタrufo gemが超便利、Railscasts全コンテンツが無料公開ほか|TechRacho by BPS株式会社
  • BestGems -- Ruby Gems Download Ranking

    BestGems.org Ruby gems download ranking. Find the best gem package for you!

  • 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 アプリケーションにおけるモンキーパッチの当て方 - クックパッド開発者ブログ
  • 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 で高速なプログラムを書く
  • 「料理サプリ」「Quipper」の技術者が語る、プロダクト開発を加速させる組織づくり【1】 | 株式会社リクルートマーケティングパートナーズ

    2016年6月28日、リクルートマーケティングパートナーズ(以下、RMP)×Quipperの技術対談を聞きながら、おいしいご飯やお酒を楽しむことができるイベント「【RMP×Quipper】Food&Drink meetup #2」が開催されました。トークセッションでは、RMPでマネジメントを担当されている金谷 祐季さん(@soplana)とQuipperの開発者である長永 健介さん(@kyanny)に、導入している技術の意図や課題、開発組織における職種間の関わり方やスピードに関する課題などを語っていただきました。 ▼「料理サプリ」と「Quipper」ー自己紹介からお願いします。金谷:こんばんは。RMPの金谷と申します。経歴から説明しますと、もともと「ジモティー」というサービスを立ち上げからつくっていて。そのあと、SonicGardenという会社とちょっとだけ仕事をして、RMPに入社しました

    「料理サプリ」「Quipper」の技術者が語る、プロダクト開発を加速させる組織づくり【1】 | 株式会社リクルートマーケティングパートナーズ
    moronbee
    moronbee 2016/07/18
    "彼らはもうRubyとかあんまり興味ないみたいなんですよ。なんか “ オジサンの言語 “ みたいになっちゃってる気がしてきて「あ、辛い!」って(笑)"
  • https://github.com/flowjs/flow.js/blob/master/samples/Ruby%20backend%20in%20Sinatra.md

    https://github.com/flowjs/flow.js/blob/master/samples/Ruby%20backend%20in%20Sinatra.md
  • RSpec をやめて Test::Unit に戻る - tmtms のメモ

    最近の RSpec は、それまで obj.stub(hoge: value) と書けたものが、 allow(obj).to receive(:hoge).and_return value と書かないといけなくなったりとか、正気の沙汰とは思えないような変更をしたりするので、何年かぶりに Test::Unit を使ってみようとリハビリ中です。 RSpec は、テストケースを入れ子にできたり、テストケースや example がクラスやメソッドではなく、文字列で自由に書くことができたりしたのが良かったのですが、最近の Test::Unit ではそれもできるようになっています。 [ruby-list:48926] [ANN] test-unit 2.5.2 このリリースはとみたさんに使ってもらえるように改良したリリー スです。新しく追加した--locationはRSpecの--line_number

    RSpec をやめて Test::Unit に戻る - tmtms のメモ
  • Rubyのテスティングフレームワークの歴史(2014年版) - 2014-11-06 - ククログ

    2014年12月にRuby 2.2がリリースされる予定です1。 Ruby 2.2にはRuby 1.9.1のときに外されたtest-unitというテスティングフレームワークが再びバンドルされる予定です。Rubyのテスティングフレームワーク周りに詳しくない人にはよくわからない状況でしょう。そこで、Rubyのテスティングフレームワークの歴史を説明することで状況を整理します。 名称の整理 この説明の中ではたくさんのテスティングフレームワークが登場します。似たようなものもあるため、最初にテスティングフレームワークの名称を整理します。この説明の中で登場する名称は次の通りです。 RubyUnit Lapidary rubyunit Test::Unit test/unit test-unit miniunit minitest RSpec 違いがわかりますか?ざっくり説明すると次の通りです。 RubyU

    Rubyのテスティングフレームワークの歴史(2014年版) - 2014-11-06 - ククログ
    moronbee
    moronbee 2015/01/08
    Ruby 2.0時代:"minitestもtest-unitもRSpecもどれも停滞することなく開発が続いています。"
  • GitHub - rubocop/rubocop: A Ruby static code analyzer and formatter, based on the community Ruby style guide.

    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

    GitHub - rubocop/rubocop: A Ruby static code analyzer and formatter, based on the community Ruby style guide.
  • MacでRuby 2.x.xがインストールできないバグ (homebrew + rbenv) - Qiita

    追記(2014/6/25) homebrewのreadlineが6.3.5に更新され、Ruby 2.xでも問題なくインストールできる状態となったそうです。(thanks to:masawadaさん) この記事はrubyが2.1.1、homebrewのreadlineが6.3.3時点の情報であり、おそらくもう必要のない過去のものになってるかと思われます。 (何も調べてないので分かりません。) この記事は残しますが、Rubyのインストール時にエラーが発生した場合は別の原因であると思われます。 この記事を参考に、readlineを過去のものに戻して使ってた人へ さっそくbrew updateしてみたところエラーが出ました。 readlineの過去のバージョンを使用するために、Formulaをgit checkoutで過去のものにしたのが原因です。 以下の記事を参考に、正常にubgradeできるよ

    MacでRuby 2.x.xがインストールできないバグ (homebrew + rbenv) - Qiita
  • これからRubyを始める人たちへ

    (追記:2012-12-03) 記事を電子書籍化しました。「Gumroad」を通して100円にて販売しています。詳細は文末に追記しましたので、購入ご検討のほどよろしくお願いしますm(__)m 電子書籍「これからRubyを始める人たちへ」EPUB版 Rubyの特徴 Rubyは、まつもとゆきひろ氏(通称Matz)により設計されたオブジェクト指向プログラミング言語です。Rubyの特徴を一言で言うならば、それは「間口が広くて奥が深い言語」ということになります。 「間口が広い」というのは、インタフェースがシンプルで誰でもが簡単に使い始められることを意味します。「奥が深い」というのは、プロフェッショナルによる長期使用に耐えうる物の言語であるということを意味します。「間口が広い」ということと「奥が深い」ということは来競合する概念ではありませんが、その両方をバランスよく組み合わせるには、対象に対する

  • Rubyでメソッドの定義場所を見つける方法 - Qiita

    RubyはModuleで組み込まれたメソッドや、method_missingを利用した「ゴーストメソッド」など、自分の見ているメソッドがそのクラス以外のどこで定義されているのか、分かりにくいケースがよくあります。 特にJavaやC#から移ってきた僕のようなプログラマは、「メソッド = どこかのクラスで定義されているもの」という印象が強いので、「持ち主がよく分からないメソッド」の存在はデバッグ等で苦労させられます。 こういったケースでは、Kernel#methodとMethod#source_locationを組み合わせることで、メソッドの定義場所を見つけることができます。 たとえば、rails consoleでblank?メソッドの定義場所を見つけたい場合は、こんな感じです。 $ rails c > 'x'.method(:blank?).source_location => ["/Use

    Rubyでメソッドの定義場所を見つける方法 - Qiita
    moronbee
    moronbee 2014/03/17
    Method#source_location
  • 正規表現によるバリデーションでは ^ と $ ではなく \A と \z を使おう

    正規表現によるバリデーション等で、完全一致を示す目的で ^ と $ を用いる方法が一般的ですが、正しくは \A と \z を用いる必要があります。Rubyの場合 ^ と $ を使って完全一致のバリデーションを行うと脆弱性が入りやすいワナとなります。PerlPHPの場合は、Ruby程ではありませんが不具合が生じるので \A と \z を使うようにしましょう。 はじめに 大垣さんのブログエントリ「PHPer向け、Ruby/Railsの落とし穴」には、Rubyの落とし穴として、完全一致検索の指定として、正規表現の ^ と $ を指定する例が、Ruby on Rails Security Guideからの引用として紹介されています。以下の正規表現は、XSS対策として、httpスキームあるいはhttpsスキームのURLのみを許可する正規表現のつもりです。 /^https?:\/\/[^\n]+$/

    moronbee
    moronbee 2014/03/07
    "Rubyに限らずPerlやPHPでもそうですが、正規表現のメタ文字 ^ と $ は「行」の先頭・末尾を指します。文字列の先頭と末尾を指定する場合は、\A と \z を使用します。"