Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

Ruby Cookbook

書籍 Ruby Cookbook | A Simple Feed Aggregator

パンくず Ruby Cookbook A Simple Feed Aggregator 概要 A Simple Feed Aggregator 内容 RSSフィードの取得方法について。 サンプルコード 当サイトの2013/05/05時点のRSSを取得してみます。 # encoding: utf-8 require_relative "../open_classes.rb" requi…

書籍 Ruby Cookbook | Converting an XML Document into a Hash

パンくず Ruby Cookbook Converting an XML Document into a Hash 概要 Converting an XML Document into a Hash 内容 XMLをHashに変換する方法について。 サンプルコード # encoding: utf-8 require_relative "../open_classes.rb" require 'xmlsimple' xml…

書籍 Ruby Cookbook | Navigating a Document with XPath

パンくず Ruby Cookbook Navigating a Document with XPath 概要 Navigating a Document with XPath 内容 XPathでのデータ取得について。 サンプルコード # encoding: utf-8 require_relative "../open_classes.rb" require 'rexml/document' xml = %{ <languages> <language name="java"> <name>Java</name></language></languages>…

書籍 Ruby Cookbook | Extracting Data from a Document's Tree Structure

パンくず Ruby Cookbook Extracting Data from a Document's Tree Structure 概要 Extracting Data from a Document's Tree Structure 内容 XMLを木構造のデータで取得するには REXMLのインスタンスをeach_elementで取得する。 サンプルコード # encoding: u…

書籍 Ruby Cookbook | Checking XML Well-Formedness

パンくず Ruby Cookbook Checking XML Well-Formedness 概要 Checking XML Well-Formedness 内容 XMLをパースすることでXMLの正当性を検証できる。 サンプルコード # encoding: utf-8 require 'rexml/document' VALID_HOGE_XML = %{ <hoge> <child_hoge>child_hoge</child_hoge> </hoge> } INVALID_…

書籍 Ruby Cookbook | alias

パンくず Ruby Cookbook alias 概要 alias 内容 Rubyではメソッドに別名をつけることが可能です サンプルコード 改行付きで標準出力を行うKernel#putsに 「改行付表示」というエイリアスをつけてみます。 # encoding: Windows-31J require "pp" module Kerne…

書籍 Ruby Cookbook | 文字列評価によるメタプログラミング

パンくず Ruby Cookbook 文字列評価によるメタプログラミング 概要 文字列評価によるメタプログラミング 内容 method_defineで定義したメソッドと同様のことが文字列評価で定義可能です。 利用するメソッドは Module#module_eval です。method_defineと異な…

書籍 Ruby Cookbook | メタプログラミングでコードのボイラープレートを避ける

パンくず Ruby Cookbook メタプログラミングでコードのボイラープレートを避ける 概要 メタプログラミングでコードのボイラープレートを避ける 内容 メソッド名・処理内容がメソッドがある場合は、 define_methodによるメタプログラミングで簡潔に記載可能で…

書籍 Ruby Cookbook | メンバー変数の自動設定

パンくず Ruby Cookbook メンバー変数の自動設定 概要 メンバー変数の自動設定 内容 レシーバのインスタンス変数に値を設定 instance_variable_set サンプルコード # encoding: UTF-8 require "pp" class Object private def set_instance_variables(binding…

書籍 Ruby Cookbook | Classの変更をListenする

パンくず Ruby Cookbook Classの変更をListenする 概要 Classの変更をListenする 内容 undef,remove_methodの利用時は、各メソッドをオーバーライドした際に 特定の処理を実行することが可能です。 Listenメソッド名 内容 method_added メソッドの追加,オー…

書籍 Ruby Cookbook | メソッドの参照の取得

パンくず Ruby Cookbook メソッドの参照の取得 概要 メソッドの参照の取得 内容 callでメソッドの呼び出し arityで引数の数を確認できます。 サンプルコード # encoding: Windows-31J require "pp" class Hoge def hoge(txt) return "#{txt} hoge" end end h…

書籍 Ruby Cookbook | 自身で定義したメソッドのリストを取得

パンくず Ruby Cookbook 自身で定義したメソッドのリストを取得 概要 自身で定義したメソッドのリストを取得 内容 各アクセスレベルごとのメソッドリストは XXXX_methods(false) で取得可能です。 ※XXXXはアクセスレベルただし、methodsの自メソッド取得版は…

書籍 Ruby Cookbook | オブジェクトのメソッドリスト

パンくず Ruby Cookbook オブジェクトのメソッドリスト 概要 オブジェクトのメソッドリスト 内容 <メソッドリストの取得> メソッドのリストの取得はObject#methods クラスメソッドのリストの取得は Object#singleton_methods<メソッドの保持確認> インス…

書籍 Ruby Cookbook | オブジェクトのクラスと基底クラス

パンくず Ruby Cookbook オブジェクトのクラスと基底クラス 概要 オブジェクトのクラスと基底クラス 内容 オブジェクトのクラスはObject#class 基底クラスはClass#superclass 祖先のリストはModule#ancestors で取得出来ます。 サンプルコード # encoding: W…

書籍 Ruby Cookbook | Mixing in Class Methods

パンくず Ruby Cookbook Mixing in Class Methods 概要 Mixing in Class Methods 内容 クラスメソッドのMixinをする場合、 サブモジュールを作成し,メインのモジュールのself.includedメソッドで レシーバを拡張する。 サンプルコード # encoding: Windows-3…

書籍 Ruby Cookbook | 後から特定のオブジェクトのみにModuleを追加

パンくず Ruby Cookbook 後から特定のオブジェクトのみにModuleを追加 概要 後から特定のオブジェクトのみにModuleを追加 内容 特定のオブジェクトのみにModuleの機能を追加したい場合は extendメソッドを利用します。 サンプルコード # encoding: Windows-3…

書籍 Ruby Cookbook | Automatically Loading Libraries as Needed

パンくず Ruby Cookbook Automatically Loading Libraries as Needed 概要 Automatically Loading Libraries as Needed 内容 利用する時に初めて対象ファイルをロードしたい場合には autoloadを利用します。 サンプルコード サンプル中で、ロード有無の確認…

書籍 Ruby Cookbook | オブジェクトの凍結

パンくず Ruby Cookbook オブジェクトの凍結 概要 オブジェクトの凍結 内容 freezeメソッドによって、オブジェクトを凍結できます。 破壊的な操作を防ぐことはできますが、参照自体を置き換えることを防げません。 サンプルコード # encoding: Windows-31J r…

書籍 Ruby Cookbook | 抽象メソッドの作成

パンくず Ruby Cookbook 抽象メソッドの作成 概要 抽象メソッドの作成 内容 Rubyは言語として抽象メソッドをサポートしていないため、 Javaのような抽象メソッドを利用したい場合は自分で仕組みを用意する必要があります。抽象メソッドとしてオーバーライド…

書籍 Ruby Cookbook | ブロックの呼び出しと作成

パンくず Ruby Cookbook ブロックの呼び出しと作成 概要 ブロックの呼び出しと作成 内容 ラムダ構文によりブロックを変数として扱うことが可能。 また、その変数をメソッドの引数にしたり 戻り値にすることも可能です。 サンプルコード # encoding: Windows-…

書籍 Ruby Cookbook | バージョン番号付き履歴ファイルの作成

パンくず Ruby Cookbook バージョン番号付き履歴ファイルの作成 概要 バージョン番号付き履歴ファイルの作成 内容 バージョン番号付き履歴ファイルの作成。 書籍では履歴番号だけ追加してましたが、応用してシステム日付を追加しました。 本日の日付+0詰め3…

書籍 Ruby Cookbook | ツリーの作成

パンくず Ruby Cookbook ツリーの作成 概要 ツリーの作成 内容 カレント配下のファイル、フォルダを取り扱うにはFindクラスのfindメソッドを 利用します。 サンプルコード # encoding: Windows-31J require 'find' Find.find('./').each do |file| puts file…

書籍 Ruby Cookbook | パーミッションの確認

パンくず Ruby Cookbook パーミッションの確認 概要 パーミッションの確認 内容 パーミッションの確認読み込み可能か確認 File.readable? <ファイル名> 実行可能か確認 File.executable? <ファイル名> 書き込み可能か確認 File.writable? <ファイル名> サン…

書籍 Ruby Cookbook | ファイルの存在確認

パンくず Ruby Cookbook ファイルの存在確認 概要 ファイルの存在確認 内容 ファイル、の存在チェックを行う場合 ファイルの存在のみ確認する場合 File.file? <ファイル名> ディレクトリの存在のみ確認する場合 File.file? <ディレクトリ名> ファイル、ディ…

書籍 Ruby Cookbook | 最終更新日の取得

パンくず Ruby Cookbook 最終更新日の取得 概要 最終更新日の取得 内容 variable = File.stat(<ファイル名>) variable.mstat # => modified time サンプル # encoding: Windows-31J require "pp" def output_file_stat(filename) stat = File.stat(filename)…

書籍 Ruby Cookbook | keyとvalueの入れ替え

パンくず Ruby Cookbook keyとvalueの入れ替え 概要 keyとvalueの入れ替え 内容 keyとvalueの入れ替えするには以下の構文を利用します。 hash.invert サンプル # encoding: Windows-31J require "pp" hash = {ge:"ho",go:"hi",shi:"ha"} pp hash pp hash.inv…

書籍 Ruby Cookbook | HashをYamlに変換

パンくず Ruby Cookbook HashをYamlに変換 概要 HashをYamlに変換 内容 HashをYamlに変換するには以下の構文を利用します。 require yaml hash.to_yaml サンプル # encoding: Windows-31J require 'yaml' require 'pp' hash = [neuro:'majin',korosensei:'un…

書籍 Ruby Cookbook | 1つのハッシュに複数の値を設定

パンくず Ruby Cookbook 1つのハッシュに複数の値を設定 概要 1つのハッシュに複数の値を設定 内容 基本、Hashはkeyとvalueの1対1で成り立ちます。 valueに配列を指定することで1対多でハッシュを利用することが可能です。 サンプル require "pp" languages …

書籍 Ruby Cookbook | ハッシュキーにシンボルを利用

パンくず Ruby Cookbook ハッシュキーにシンボルを利用 概要 ハッシュキーにシンボルを利用 内容 以下の構文でシンボルを利用可能です。 :hoge 'hoge'.intern シンボルについて Rubyマニュアルより Rubyの内部実装では、メソッド名や変数名、定数名、クラス…

書籍 Ruby Cookbook | 配列の最大値・最小値

パンくず Ruby Cookbook 配列の最大値・最小値 概要 配列の最大値・最小値 サンプル require "pp" class Person attr_accessor:name,:age def initialize(name,age) @name,@age=name,age end end puts [12,11,13].min puts [12,11,13].max puts ["hage","hog…