Ruby

 Computer >> コンピューター >  >> プログラミング >> Ruby
  1. 【Ruby入門】Array#assocとArray#rassocで配列をハッシュのように扱う方法

    配列に大量のデータを格納しているけれど、ハッシュのようにキーと値のペアで検索したい——そんな経験はありませんか? 実はRubyには、配列をキー/バリュー構造のように扱える便利な仕組みが用意されています。この記事では、その使い方をわかりやすく解説します。 Array#assoc と Array#rassoc とは ここでは、数分ごとに「買え」「売れ」という銘柄推奨を出してくれる、架空の株予想マシンを例に考えてみましょう。このマシンをコンピュータに接続すると、次のようなデータのストリームを受け取れるとします。 picks = [ [AAPL, buy], [GOOG, sell],

  2. RubyのDATAと__END__を使いこなす:スクリプト内にデータを埋め込むテクニック

    Rubyには、スクリプト自身のソースファイルをデータ源として利用できる仕組みがあることをご存知でしょうか? 一見地味なトリックですが、使い捨てのスクリプトや概念実証(PoC)を素早く作りたいときに、意外と役立つテクニックです。早速見ていきましょう! DATAと__END__の基本 以下の例では、__END__という少し変わったキーワードを使用しています。__END__より下に書かれた内容は、Rubyインタプリタによって完全に無視されます。 しかし、ここからが面白いところです。RubyはDATAというIOオブジェクトを提供しており、これを使うと__END__以降の内容を、通常のファイルと同

  3. Rubyでrescueブロックの外から直近の例外を取得する方法 ― $!とPRYの活用

    コードがそのライフサイクルを直接制御していない場合でも、直近に発生した例外を取得できると便利な場面は少なくありません。たとえば、アプリケーションに基本的なクラッシュ検出機能を追加したいとしましょう。捕捉されなかった例外によってクラッシュが起きた際に、詳細な情報をログへ記録したいはずです。 まずは、アプリケーションが終了するたびに実行されるハンドラーを追加することから始めます。これには、Ruby組み込みのat_exitメソッドを使うのが最も手軽です。 at_exit do puts the app exited end しかし、この終了時コールバックが例外をきっかけに呼び出されたもの

  4. スプラウトクラスで挑むRubyのリファクタリング:テストできないレガシーコードを実践的に改善する

    レガシーなアプリケーションの保守で最も厄介な課題の一つは、コードがそもそもテストしやすい形で書かれていないことです。その結果、意味のあるテストを書くことが難しい、あるいはほぼ不可能になってしまいます。 これはまさに「鶏と卵」の問題です。レガシーアプリケーションにテストを書くためにはコードを変更する必要がありますが、テストなしに安心してコードを変更することはできません。 このパラドックスにどう向き合えばよいのでしょうか? このテーマは、Michael Feathersの名著『Working Effectively with Legacy Code(レガシーコード改善ガイド)』で詳しく扱われ

  5. AngularJS × Rails 4 入門:実務で通用するスタック構築チュートリアル

    AngularJSの使い始めは、それほど難しくありません。公式ドキュメントは非常に充実しており、チュートリアルも十分にシンプルです。 しかし、複数の技術を組み合わせ始めた途端、話は一気に厄介になります。 素のJavaScriptではなくCoffeeScriptを採用すると、構文の違いに加えてプリコンパイル(事前処理)への配慮も必要になります。これらは単体では些細な問題ですが、そこにRuby on Rails、Jasmine、Karmaまで加わるとどうなるでしょうか。驚くほど手ごわくなります。 本チュートリアルでは、まさにこのスタックを使用します。苦行のためではありません。これは実際の開発

  6. Ruby Gemsはどう動くのか?CanCanを例に仕組みを徹底解説

    Railsでの開発が快適な理由のひとつは、認可(authorization)、サイト管理、EC機能など、よくあるプログラミングのニーズに対して、あなたより賢い誰かがすでに解決策をコード化し、gemとしてパッケージ化してくれている点にあります。 もちろん、Gemfileにgemを追加すれば、内部の仕組みを深く理解しなくてもその恩恵を受けられます。しかし、「一体どうやって組み込まれているのだろう?」と疑問に思ったことはありませんか? ここでは、Ryan Bates氏作の認可用gem「CanCan」を例に、以下の3つの質問に答えていきます。これらは視点を広げれば、あらゆるgemに共通して当てはま

  7. RSpecでオブジェクト割り当てをテストする——パフォーマンス最適化のリグレッションを防ぐ

    最近、Rubyのパフォーマンスが大きな話題になっています。実は、コードにほんの少しの修正を加えるだけで、パフォーマンスを最大99.9%も向上させることが可能です。 最適化はなぜ「元に戻ってしまう」のか コードの最適化方法を解説する記事は数多く存在しますが、その最適化が維持され続けていることをどうやって保証すればよいのでしょうか。 頻繁に呼び出されるメソッド内で、フリーズした定数ではなく文字列リテラルを埋め込んだ場合の影響を、常に意識しているとは限りません。将来のコード保守の中で、せっかくの最適化による恩恵をうっかり失ってしまうことは、とても起こりやすいのです。 私自身、Honeybad

  8. 【Ruby】gemインストール時にrdoc・riのドキュメント生成をグローバルに無効化する方法

    Rubyのgemインストールは、時に非常に遅く感じることがあります。その最大の原因のひとつがドキュメント生成です。gemをインストールするたびに、コンピュータはそのソースコード全体をスキャンし、rdoc/ri形式のドキュメントを生成する必要があります。 この機能は、オフライン環境でgemのドキュメントを参照したい場合には便利です。ターミナルで gem server を実行し、ブラウザで https://localhost:8808 にアクセスすれば、ローカルのドキュメントを閲覧できます。また、ri コマンドを使えば、ターミナルから直接ドキュメントを検索することも可能です。 しかし、普段から

  9. RubyのExceptionとStandardErrorの違いとは?rescueの正しい使い方を徹底解説

    「Rubyで決してExceptionをrescueしてはいけない!」 こんな警告を耳にしたことがあるかもしれません。確かに良いアドバイスなのですが、詳しい人でなければ意味が分かりにくいものです。この記事では、この一文の意味を丁寧に解きほぐしていきます。 Rubyでは例外を次のようにrescueできることは、ご存知の方も多いでしょう。 begin do_something() rescue => e puts e # eはエラー情報を含む例外オブジェクト end さらに、例外クラス名を指定すれば、特定のエラーだけを捕捉することもできます。 begin do_something

  10. Rubyでシェルコマンドの標準出力と標準エラー出力をキャプチャする方法

    はじめに 要約: Rubyからシェルコマンドを実行し、その標準出力(stdout)・標準エラー出力(stderr)・終了ステータスをまとめて取得したい場合は、Open3.capture3メソッドを使いましょう。出力をストリーミング形式で逐次処理したい場合は、Open3.popen3が便利です。 数多くの不十分な選択肢 Rubyからシェルコマンドを実行する方法は文字通り492通りあり、それぞれ動作が微妙に異なります。あなたも以下のいずれかを使ったことがあるのではないでしょうか。筆者の定番はバッククォート(``)でした。 exec(echo hello world) # Rubyを終了し

  11. Rubyでカスタム例外を作成する方法【初心者向けガイド】

    Rubyでは、独自の例外クラスを簡単に作成できます。この記事では、カスタム例外を作るための基本的な手順を、コード例とともにわかりやすく解説します。 1. 新しいクラスを作成する Rubyにおいて、例外も他のオブジェクトと同じくクラスとして定義されています。新しい種類の例外を作りたい場合は、StandardError、あるいはそのサブクラスを継承したクラスを定義するだけでOKです。 class MyError < StandardError end raise MyError 慣例として、新しく作る例外クラスの名前は「Error」で終わるように命名します。また、カスタム例外をモジュ

  12. Rubyの例外階層を理解する|Exception継承ツリーとrescueの基本

    Rubyにおける例外は、実は単なるクラスです。「例外階層」とは、Exceptionクラスを継承するすべてのクラスで構成される木構造のことを指します。 以下は、Ruby 2.1標準ライブラリにおける例外階層の一覧です。 Exception NoMemoryError ScriptError LoadError NotImplementedError SyntaxError SecurityError SignalException Interrupt StandardError -- rescueのデフォルト ArgumentError

  13. Pryで例外をスマートに扱う方法|バックトレース表示からカスタマイズまで

    Rails開発者なら、Railsコンソールを頻繁に使う方も多いのではないでしょうか。そして今や、RailsコンソールといえばPryが定番。素のIRBと比べると、その使い勝手は段違いです。 実はPryには、例外を扱う際に非常に便利な機能が標準で組み込まれています。この記事では、その中でも特に役立つ3つの機能を紹介します。 直近の例外の完全なバックトレースを表示する Pry(IRBでも同様)で例外が発生すると、通常は短縮されたバックトレースが表示されます。多くの場合それで十分ですが、詳細を確認したい場面もありますよね。 そんなときは wtf -v コマンドを使いましょう。直近の例外の完全な

  14. Rubyistのための環境変数徹底ガイド――仕組みの理解からRailsでの実践管理まで

    Webアプリを開発環境と本番環境の両方で効果的に管理したいなら、環境変数への深い理解は欠かせません。 実は、これは昔から当たり前だったわけではありません。数年前まで、Railsアプリを環境変数で設定する開発者はほとんどいませんでした。しかし、Herokuの登場がその常識を大きく変えたのです。 Herokuは開発者に「12-Factor App(12ファクター・アプリ)」という設計手法を広めました。このマニフェストには、デプロイしやすいアプリを作るためのベストプラクティスが数多くまとめられており、中でも環境変数に関するセクションは特に大きな影響力を持っています。 12ファクター・アプリは設定(c

  15. 環境変数を守る:APIキーやシークレットのためのセキュリティ対策ガイド

    前回の記事「The Rubyists Guide To Environment Variables」では、環境変数システムの仕組みと、よくある誤解について解説しました。しかし、ある読者から「セキュリティについての言及が少ない」とのご指摘をいただきました。 現在では、秘密のAPIキーなどの重要な情報を環境変数に保存するのが一般的になっています。だからこそ、環境変数が持つセキュリティ上のリスクを正しく理解することが重要です。今回はそのポイントを見ていきましょう。 最悪のシナリオ ハッカーがroot権限、あるいはWebアプリケーションの所有ユーザーとしてサーバーへのアクセスに成功したと想像してくださ

  16. Rubyのラムダ徹底解説――基本から実践的な応用テクニックまで

    Rubyにおいてブロックは非常に重要な存在であり、ブロックなしにこの言語を語ることはできません。では、ラムダはどうでしょうか?ラムダを愛している人はいるのでしょうか?実際のところ、何年もラムダを使わずに過ごすことだって可能かもしれません。まるで昔の時代の遺物のように見えることもあるでしょう。 しかし、それは完全な真実ではありません。少し掘り下げてみると、ラムダには興味深い技が数多く隠されているのです。 この記事では、まずラムダの基本的な使い方から始め、その後、より高度で面白い応用へと進んでいきます。すでに毎日ラムダを使いこなしている方は、ぜひ後半の応用編までスクロールしてください。 ラムダにつ

  17. DerailedでRailsアプリのGem別メモリ使用量をプロファイリングする方法

    Railsアプリのメモリ消費、その原因はGemかもしれない Railsアプリが大量のRAMを消費している――それ自体はよくある話です。しかし、それが「仕方のないこと」だと諦める必要はありません。実は、アプリケーションのメモリフットプリントを押し上げている犯人が、1つまたは複数の肥大化したGemであるケースは少なくありません。 Derailedとは何か 最近、Richard Schneeman氏による非常に興味深いプロジェクト「Derailed」を見つけました。これは自動ベンチマークツールのコレクションで、GitHub上で公開されています。導入はとても簡単で、Railsアプリのボトルネックとな

  18. OpenStructがRubyのパフォーマンスを大幅に低下させる理由

    Ruby開発者の多くはハッシュ(Hash)を愛用しています。しかし、ハッシュにはいくつかよく知られた弱点があります。Richard氏が「Hashie Considered Harmful」で指摘したように、ハッシュは柔軟すぎることがあるのです。ちょっとしたタイプミスで、意図しないキーへの代入や参照を平気で行ってしまいます。 a = { type: F150 } a[:typo] # nil ハッシュの代替手段として一般的なもの 構造化されたデータを格納するためにハッシュを使っているなら、「実は柔軟性は必要ない。むしろトラブルの元になるだけだ」と判断することもあるでしょう。 代替手段はいくつか

  19. RubyでRSSフィードからメールダイジェストを生成するスクリプトを作ってみよう

    こんな感じのものを作ります。 メルマガの立ち上げは、TODOリストにずっと載ったままになっていました。今日こそは実現させようと思います。登録をご希望の方はこちらからどうぞ。 実は私は長文のニュースレターがあまり好きではありません。好きなのは、興味深いコンテンツを厳選してまとめた「ダイジェスト」形式のものです。RubyWeeklyやWistiaのブログダイジェストなどが思い浮かびます。 こうしたダイジェストを毎回手作業で作るのは時間がかかりすぎますし、かといって完全自動化するとどこか味気なくなってしまいます。そこで目指すのは「半自動」の仕組みです。具体的には、最新のブログ記事を取得して、後

  20. Ruby Hashの高度なテクニック徹底解説 ―― デフォルト値の制御から遅延キャッシュまで

    Ruby開発者ほどHash(ハッシュ)を頻繁に使うと、「もう全部知っている」と思い込みがちです。 しかし、一見地味なRubyのHashには、意外なほど多くの隠れた技が詰まっています。単なるキー・バリューの仕組みにとどまらず、Hashオブジェクトを使えば、非常に興味深く洗練された処理を実現できるのです。 あらゆるオブジェクトがハッシュのキーになる 本題に入る前に、見落とされがちなポイントを1つ指摘しておきましょう。ハッシュのキーには文字列やシンボルを使うことが多いものの、それは他の種類のオブジェクトが使えないという意味ではありません。実際、ほとんど何でもキーにできるのです。 # 数値もハッシ

Total 621 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:31/32  20-コンピューター/Page Goto:1 25 26 27 28 29 30 31 32