ruby

久しぶりのコントリビュート

コロナ騷ぎの中、久しぶりにプルリクエスト作った。 3つ! Remove nodenv-default-packages from install_plugin of nodenv #8 Run anyenv install --init Use local variable inside instance variablels #13 簡単な修正ばかりだけど、わかってもらえるよう…

2020-01-31 日報

今日はいろいろやったので箇条書きで。 ruby2.7にするとbyebugってインストールできない? bundle install 中にエラーでてたなぁ。pryの依存なので、はまってる人多そうだけど、今のところはクリティカルに困ってないので放置。 puppeteerのwaitむずい Page#w…

factory_botの続き

昨日の日記 でfactory_botの文句を言ったんだけど、心を入れかえて、ドキュメントを読んでみました。 callbackという機能があってそれを使うとやりたいことが出来た。(ヤッター) FactoryBot.define do factory :poduct, class: 'Product' do after(:build) d…

rubyのfixture replacementについての文句

何年ぶりなんだろ。おひさしぶりです。 7年ぶりの投稿は超初心者ネタ。 rubyのfixture replacementってみなさん何使ってますか? まぁ factory_bot ですよね。わたしもそうです。 factory_botって真面目にassociationを表現しようとするとなんか直感的に感じ…

era_ja0.2.0公開

西暦から和暦に変換するgem、era_jaをアップデートしました。 アップデートの内容 漢数字を出力出来るようにしました 今回のアップデートではフォーマット文字列に漢数字を追加しました。 こんな感じで出力出来ます。 Date.new(2013,2,11).to_era("%O%JY年%J…

Capybaraのtableishもどきを読む

こちらのgist で page.find('table').all('tr').map { |row| row.all('th, td').map { |cell| cell.text.strip } } というふうに以前のcucumberでできていたtableishをcapybaraで実現するコードが紹介されています。railsなどのwebアプリのテストで、一覧の…

SinatraでHTTPメソッドのDELETEを実現する

SinatraでHTTPメソッドのDELETEを実装する時かなりはまったのでメモです。実はもっと賢いやり方があるのかもしれないので、コメント大歓迎(基本的に僕のブログは全部そうです)。 今回は間違ったところから書きました。 使用環境 ruby : 1.9.3-p286 sinatra :…

MacOSX lionにXcode4.3 rvm ruby1.8.7をインストールしてみる

ruby1.9.3は普通にインストール可能だと思うので割愛。 Xcode4.3へのアップデート App Storeからインストールmobileなんたらのインストールをうながされるのでインストール。Xcode 4.2.1などの古いXcodeを削除されるか聞かれるので削除を選ぶDownloadタブか…

MacOSX lion Xcode4.3 homebrew rvm(rbenv)で ruby1.9.3 と ruby1.8.7をインストールしたい

件名の通り、出来るって記事じゃなくって「したい!」って記事です。全然さわっていないrails2系のアプリをもういいかげん3系にあげておかんとと思って環境構築しようとしたらもう時間切れなんでしょうねぇ。。。 途中経過を書いておきます。 前提 僕の使用し…

era_jaというgemを公開しました

半年ぶりの更新です。まぁ宣伝です。era_jaというrubyのDateとTimeインスタンスを和暦に変換するgemを公開しました。 era_ja | RubyGems.org | your community gem host今はこれだけの機能ですが、調子にのったら和暦 西暦 への交互変換が可能になったらうれ…

sinatraでテストの入門の入門(その3)sinatraでcapybara

以前書いたものの続きです。 rspecと同様ほとんど変りはありません。と言ったら違うか。。 サンプルコード require './hello_world' require 'capybara' require 'capybara/dsl' require 'test/unit' class HelloWorldTest < Test::Unit::TestCase include C…

rubyベストプラクティスchapter8.5

rakeについて。あんまり目新しいものがないので、本当に感想だけ。最近気づいたけど、公開されているライブラリのRakefileを見ると 「こんなものまで?」って思える作業でさえrakeタスクにしてるのが わかります。 「プログラマーが知るべき97のこと」にも「…

ライブラリ公開してみました

wrap_excelというライブラリを公開してみました。パチパチパチパチ! 何をしてくれるライブラリなのかというと rubyのwin32oleでのexcel操作の部分をよりrubyっぽく、煩雑な部分を省いて書けるように頑張っています。rubyでexcelを操作するっていうと今ではsp…

rubyベストプラクティスchapter8.4

コメントで指摘してもらった誤字を修正しました。ご指摘ありがとうございました。 [2012-08-03 Fri]gemでのプロジェクト管理。今ようやく自分用のライブラリもgemにした方が楽かも?って思いはじめて、gem作っていたけど、bundlerにおまかせだったので勉強に…

rubyベストプラクティスchapter8.3

rdocの便利機能の紹介簡単な例も書かれているのですが、とりあえず飛ばして便利機能を nodoc rdocに含めたくないものに指定する。 メソッドレベル def hoge # :nodoc: end クラスレベル class Hoge # :nodoc: end ってやるとrdocには出力されない。 ただし、…

rubyベストプラクティスchapter8.2

前章では総論として提示されたものの各論。 README READMEには ライブラリの概要 インストール方法 代表的な使い方 作者への連絡方法 を書く。 これらの全情報をREADMEに書く必要はなくて、必要に応じて別のファイルにして、 READMEにはリンクを示すようにし…

rubyベストプラクティスchapter8.1

プロジェクトメンテナンスの方法の導入部分。 この章ではhamlを参考にrubyのライブラリをどのように理解していくかを見ていきます。 導入 まずはREADME読む。 Rakefileがあればrake --tasksでタスクの一覧を確認しよう。 rake taskには install、test、rdoc(…

rubyベストプラクティスchapter7.5

アプリケーションのローカライズ初Sinatra!簡単にwebアプリが出来る!すげーーーー。本では実際のローカライズのところはGibberish::simpleを使うってことを言っていますが、著者のgithubリポジトリからライブラリをもってこないとなりません。 https://githu…

rubyベストプラクティスchapter7.4

とりあえず写経。。。 読み込みを色々な文字にしたり、読み込むバイトを色々変えてやってみる。元はこれ File.open("./hello.txt") { |f| loop do break if f.eof? chunk = "CHUNK: #{f.read(5)}" #ここの5を色々変える puts chunk unless chunk.empty? end …

sinatraでテストの入門の入門(その2)sinatraでrspec

以前書いたものの続きです。 題名の通りsinatraでrspecを使う基本的なことがらになります。 sinatraだけの設定を考えるとtest/unitと同じです。乱暴に言うとassertがshouldになるだけだと思ってよいと思います。 サンプルコード 前回のサンプルコードをrspec…

rubyベストプラクティスchapter7.3

スクリプトのデフォルトのエンコーディングとそれを変更する方法 デフォルトのエンコーディングの決定方法 rubyのエンコーディングがどのように決められているか。 ソースエンコーディングは基本マジックコメント。マジックコメントが無い時はUS-ASCII。 た…

rubyベストプラクティスchapter7.2

国際化を意識した一般的なライブラリについて おおざっぱにはこんな感じ。 基本utf-8で書く マジックコメント必須 ファイルの入出力は文字コードを意識して 具体的には File.read("foo.txt", encoding:"ISO-8859-1:UTF-8") とか File.open("foo.txt", "w:ISO…

sinatraでテストの入門の入門(その1)

「sinatraすげー」って今さら思い、sinatraで何か作ってみようかねーと思い、当然テストのことが気になりました。そもそも「テスト出来るの?実はrailsと比べて大変じゃないの???」って感じのアホな不安でした。(1週間前までsinatraのことと言えば名前し…

rubyベストプラクティスChapter7.1

入力が色々なエンコーディングが想定される場合のライブラリ側の対応方法。例としてCSVライブラリを見ている。 CSVライブラリは読み込みのデータが大量であることが結構あるので、入力データのエンコーディングを変更するのではなく、パーサ側のエンコーディ…

rubyベストプラクティスchapter6.4

おぉ7月2回目の日記かぁ。。。 rubykaigi2011にもいってるから書こうと思えばネタあるのになぁ。。。 淡々と読書日記を書きます。Loggerクラスの使い方使いたいなぁと思いつつ、なんとなく使わずにすんでいたLoggerクラス。 ここにのっているStandarderror#r…

rubyベストプラクティスchapter6.3

オブジェクトの詳細を調べていく方法。 ここは小節ごとに内容が変ってきてる。 リフレクションって便利よって話 単純に「kernel#p」メソッドとか「Object#inspect」とか使うんじゃなくって。リフレクションを利用すると知りたい情報にアクセス出来る。 紹介…

rubyベストプラクティスchapter6.2

バグ報告からテストコードへの変換の方法 問題が発生したコードから問題の核を見つけ出す方法。素直に写経。でも、当然のごとく直近のPrawnを使うと事象は発生しません。 発生するべきバグが発生しないのはなんか気持ち悪いので、prawnのGitHubリポジトリか…

rubyベストプラクティスchapter6.1

デバックのプロセス。ある程度出来たコードに対して不安要素を確認していく過程なのかな。。。 ちょっと逸脱したテストケースを考えて pメソッドとかログメッセージとかで上記のテストケースがうまくいくか確認して irbで詳細をおってみて テストを書いて テ…