Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

2014-01-01から1ヶ月間の記事一覧

SublimeSunippetter | 追加要件 クエスチョンマークを含むメソッドも出力可能にする

概要 追加要件 クエスチョンマークを含むメソッドも出力可能にする 詳細 追加要件 クエスチョンマークを含むメソッドも出力可能にします。 以前は設定メソッド名=出力ファイル名にしていたためクエスチョンマークをくむメソッド名があると ファイルの命名に…

TbpgrUtils | 追加要件 テスト用ユーティリティ TestToolboxモジュールを追加

概要 追加要件 テスト用ユーティリティ TestToolboxモジュールを追加 詳細 追加要件 テスト用ユーティリティ TestToolboxモジュールを追加します 仕様 ・テストやデバッグ用に利用するユーティリティを提供するモジュール ・Kernel#capture_stdout:ブロック…

TbpgrUtils | ver0.0.8 追加要件 メソッド一括定義 Kernel#bulk_define_methodsを追加

概要 追加要件 メソッド一括定義 Kernel#bulk_define_methodsを追加 詳細 追加要件 メソッド一括定義 Kernel#bulk_define_methodsを追加 目的 ユーティリティ的な機能などを作成する際に、既存のクラスをオープンする場合に 一部のクラスにはほとんど実装内…

ActiveSupport | Object#acts_like?

概要 Object#acts_like? 詳細 Object#acts_like?について Object#acts_like? acts_like_xxx?を実装している場合に acts_like? :xxxを呼び出すと真を返却する。ダックタイピングを利用する際のマーカーとして利用する。 サンプル # encoding: utf-8 require "…

ActiveSupport | Kernel#class_eval

概要 Kernel#class_eval 詳細 Kernel#class_evalについて Kernel#class_eval 特異クラス(singleton_class)のclass_evalを呼び出すのと同等。 サンプル # encoding: utf-8 require "active_support/core_ext/kernel/singleton_class" require "tbpgr_utils"…

TbpgrUtils | 追加要件 サンプルコード出力用メソッド Kernel#print_eval/puts_evalを追加

概要 追加要件 サンプルコード出力用メソッド Kernel#print_eval/puts_evalを追加 詳細 追加要件 サンプルコード出力用メソッド Kernel#print_eval/puts_evalを追加 仕様 ・Kernel#print(puts)_eval(code, binding)でcode文字列を実行しつつ、結果を文字列出…

ActiveSupport | Object#try

概要 Object#try 詳細 Object#tryについて Object#try nilでは無い時だけメソッドを実行したい場合に利用する。 nilの場合は例外は発生せず、nilを返却するObject#tryはメソッドが存在しない場合にエラーにならない。(nilを返却する) Object#try!はメソッ…

ActiveSupport | Object#deep_dup

概要 Object#deep_dup 詳細 Object#deep_dupについて Object#deep_dup Rubyの標準コピーのdupメソッドはシャローコピーになっている。 deep_dupはディープコピーの機能を提供する。 サンプル # encoding: utf-8 require "active_support/core_ext/object/dee…

ActiveSupport | Object#duplicable?

概要 Object#duplicable? 詳細 Object#duplicable?について Object#duplicable? dupが可能かどうかを返却する。 Rubyのオブジェクトのうち、一部のオブジェクトはシングルトンになっているため dupが不可能になっている。例えば、数字の1や論理値のtrueなど…

ActiveSupport | Object#presence

概要 Object#presence 詳細 Object#presenceについて Object#presence present?がtrueならインスタンスを返却、それ以外ならnilを返却する。 nilガードと併用されるパターンが多い。 present?については下記記事参照ActiveSupport | Extensions to All Objec…

書籍 Rubyベストプラクティス | 美しいAPI設計 | 配列引数

概要 配列引数 内容 Rubyの引数について。 配列引数について。 アスタリスク+引数名で引数を配列として受け取ることができる。Array#flattenなどと組み合わせると柔軟な引数の設定が可能となる。 サンプル # encoding: utf-8 class Hoge def initialize yie…

書籍 Rubyベストプラクティス | 美しいAPI設計 | 擬似キーワード引数

概要 擬似キーワード引数 内容 Rubyの引数について。 擬似キーワード引数。 Ruby1.9まではRubyがキーワード引数をサポートしていないため、大体手段として利用する手法。 Ruby2.0では文法としてサポートされている。擬似キーワード引数は順序付き引数との併…

書籍 Rubyベストプラクティス | 美しいAPI設計 | オプション有りの順序付き引数

概要 オプション有りの順序付き引数 内容 Rubyの引数について。 オプション有りの順序付き引数。 オプション以外の引数はどれも常に必須であり、指定順序に依存する。 オプションはデフォルトを指定して省略可能にするパターン。一部の引数のみ、未指定の際…

書籍 Rubyベストプラクティス

概要 書籍 Rubyベストプラクティスに関するメモ。 全てをカバーせず、自分の中で新たに学ぶことやまとめ直しておきたいことのみを抜粋します。 また、例示するサンプルも写経せずに出来るだけ自分で考えたサンプルにします。 一覧 章No 章項目 内容 URL 1 テ…

書籍 Rubyベストプラクティス | 美しいAPI設計 | 順序付き引数

概要 順序付き引数 内容 Rubyの引数について。 一番標準的な順序付き引数。 複数の引数はどれも常に必須であり、指定順序に依存するパターン。 指定される引数が常に決まっているような場合に利用される。 サンプル # encoding: utf-8 class Hoge def hogeri…

メタプログラミングRuby | 番外編 | イディオム 『!!』(double not)

概要 イディオム 『!!』(double not) 内容 イディオム 『!!』(double not)について。Railsのコード等、オープンソースのコードを読んでいて見かけたイディオム。 !!を2つ重ねることによって、論理型の返却が必要な際にnilをfalseに変換しつつ 真偽判定を…

ActiveSupport | Extensions to All Objects | blank?/present?

概要 Object#blank?/present? 詳細 Object#blank?/present?について Object#blank? false、nil、スペース文字のみの文字列、空のHash、空の配列、対象クラスにempty?が実装されていてtrueを返した場合に真を返す。 Object#present? blank?の反対。実際に実装…

Ruby | File | extname

概要 File.extname 詳細 拡張子を取得します サンプル コード # encoding: utf-8 def create_file(filename, contents) File.open(filename, 'w:utf-8') {|f|f.print contents} end filenames = ['sample1.txt', 'sample2.rb', 'no_extension'] filenames.ea…

TbpgrUtils | 追加要件 パターン文字列によるゴーストメソッド定義モジュール Ghostableを追加

概要 追加要件 パターン文字列によるゴーストメソッド定義モジュール Ghostableを追加 詳細 追加要件 パターン文字列によるゴーストメソッド定義モジュール Ghostableを追加 仕様 ・moduleとして提供する ・第1引数にメソッドのパターン文字列を正規表現で指…

Ruby | File | expand_path

概要 File.expand_path 詳細 第1引数に指定したfilenameを絶対パスに展開する。 第2引数は省略するとカレントディレクトリを基準に。 指定した場合は、指定ディレクトリを基準にします。 サンプル コード カレントディレクトリがWindowsのC:\tmpだったとしま…

ActiveSupport

概要 Ruby on Railsのライブラリ、ActiveSupportについて。 一覧 ActiveSupport 項目 URL 各種ロード方法 http://d.hatena.ne.jp/tbpg/20140111/1389450398 Object#blank?/present? http://d.hatena.ne.jp/tbpg/20140113/1389613367 Object#presence http://…

ActiveSupport | 各種ロード方法

概要 各種ロード方法 詳細 部分ロード(一定のテーマに基づくメソッド単位) core_ext/array/accessなどクラスレベル+テーマごとに分割されて作成されているメソッド群単位で利用する。 下記はcore_ext/array/accessのみを利用する場合の例です。 # encodin…

Ruby | File | exists?

概要 File.exists? 詳細 ファイルまたはディレクトリが存在するか判定する。 サンプル コード カレントディレクトリがWindowsのC:\tmpだったとします。 # encoding: utf-8 def create_file(filename, contents) File.open(filename, 'w:utf-8') do |f| f.pri…

Git | 一度コミットしたファイルを後から除外する

Git

概要 一度コミットしたファイルを後から除外する 詳細 一度コミットしたファイルは、.gitignore等に追加してもリポジトリに残ったままになります。 リポジトリから削除するためには下記の操作が必要です。 ファイル削除+リポジトリからも削除をする場合 git…

Ruby | File | dirname

概要 File.dirname 詳細 ディレクトリパスを取得する(絶対、相対双方) サンプル コード カレントディレクトリがWindowsのC:\tmpだったとします。 # encoding: utf-8 def create_file(filename, contents) File.open(filename, 'w:utf-8') do |f| f.print c…

GitCloner | Gitリポジトリからcloneした内容を任意にディレクトリに配置するgem

概要 Gitリポジトリからcloneした内容を任意にディレクトリに配置するgemを作成 一覧 version リリース内容 リリース日 URL 0.0.4 exit statusを設定。その他各種リファクタリングを実施 2014/06/08 -- 0.0.3 CLIを利用せずに直接Cloneを呼び出し可能にする …

GitCloner | Gitリポジトリからcloneした内容を任意にディレクトリに配置するgem

概要 Gitリポジトリからcloneした内容を任意にディレクトリに配置するgemを作成 詳細 Gitリポジトリからcloneした内容を任意にディレクトリに配置するgemを作成しました 仕様 ・gitcloner initでGitclonefileのひな形を生成 ・Gitclonefileにclone対象のリポ…

Templatable | ERBのテンプレート処理を行うクラスを生成するCLIツール Templatable gem

概要 ERBのテンプレート処理を行うクラスを生成するCLIツール Templatable gem 一覧 version リリース内容 リリース日 URL 0.0.1 初期リリース 2014/01/09 http://d.hatena.ne.jp/tbpg/20140109/1389278814 関連 GitHub https://github.com/tbpgr/templatabl…

Templatable | ERBのテンプレート処理を行うクラスを生成するCLIツール Templatable gemを作成

概要 ERBのテンプレート処理を行うクラスを生成するCLIツール Templatable gemを作成 詳細 ERBのテンプレート処理を行うクラスを生成するCLIツール Templatable gemを作成 仕様 ・templatable initで作成するソースコードの設定を行うためのTemplatablefile…

TbpgrUtils | 追加要件 テンプレート処理用モジュール Templatableを追加

概要 追加要件 テンプレート処理用モジュール Templatableを追加 詳細 追加要件 テンプレート処理用モジュール Templatableを追加 仕様 ・moduleとして提供する ・placeholdersハッシュにプレースホルダー用の変数を設定する ・コンストラクタにmaterial(材…