hotoolong's blog

RailsやVim、業務で気になったことを綴ってます

Ruby

Ruby2.6が早くもpreveiw2をリリース

今年のRubyKaigiは少し大きめのリリースがあったので残念ながら会社でお仕事してました。 Ruby 2.6.0-preview2 Released preview2がリリースされたということで早速インストールしてみました。 brewからruby-buildを入れているので以下のように設定して置き…

今更ながら「20年目のRubyの真実」を読んだ

2015年の話なんですね。 ちょっと長いですが楽しく読めました。 個人的に以下が面白かったです。 驚き最小の法則が逆にめんどくさい 次の言語来てほしいけど誰も載ってこない Rails、Rubygemsなどのコミュニティが果たす影響はすごく大きい プロモーションが…

Capybaraでselect時に同じ名称のvalueがありエラーになってしまう

RspecでCapybaraのテストをしてたのですが、 select '東京都', from: '都道府県' と記載している箇所で Capybara::Ambiguous: Ambiguous match, found 2 elements matching visible option "東京都" within #<Capybara::Node::Element tag="select" path="/html/body/div/div/div[3]/div[2]/div/div/form/div[8]/select"> のようなエラーが出てしまいました。 FactoryBot</capybara::node::element>…

単一の文字列中から文字列を探すときは正規表現は使わない

文字列から文字列を探すときには正規表現をよく使ってしまいます。 Effective Rubyには =~ などのPerl風機能を避けようということが書かれています。 RuboCopでは逆に=~を使うように促されてしまってなんのこっちゃと思っていたのですが、 ruby-style-guide…

Rails4.2でlike句のサニタイズをする

2016年はじまってもう2月になってしまいました。 遅ればせながら、あけましておめでとうございます。 昨年から相当ハードなスケジュールでなかなかブログが書けてないですが、 今年はもう少し書く時間を確保したいところ。 頑張ります。。 今日のお題は SQL…

Rubyの+=はメソッドじゃない

演算周りの処理をまとめていた時にsendで呼び出せると 綺麗にリファクタリングできるかなとおもい調べていると 1.send(:'+',3) => 4 1.send(:'+=',3) NoMethodError: undefined method `+=' for 1:Fixnum NoMethodErrorになってしまったのですが、Google先生…

Rubyの便利メソッド Kernel#Array

Kernel#Arrayは引数で受け取ったものを配列に変換してくれるメソッドなのですが、 意外に便利です。 引数で受け取ったいろいろなオブジェクトを配列にして返却してくれます。 module function Kernel.#Array (Ruby 2.2.0) 試してみると Array(nil) #=> [] Ar…

正規表現のエスケープ

文字列の検索では正規表現をよく使いますが Railsでparamsから受け取ったワードをそのまま正規表現に突っ込んでたりして 痛い目に合いそうなコードを見つけたので、Regexp#escapeでエスケープしようよという話。 rp = Regexp.escape("$bc^") puts rp #=> \$b…

each_sliceを使って簡易カレンダーを作成

仕事が忙しくなってきました。少し大変です。 少しのアイドルがある環境で過ごしたいなと贅沢なことを考えながら、 周りからモチベーションを落とされるというよくわからない状況を奮起しながら程良く頑張っています。さて本題です。 最近カレンダーを出力し…

大小比較でどちらかの値と取りたい場合のコーディングパターン

Ruby(Rails)で大小比較してどちらかの値と取りたい場合にどうやって書くのか という素朴な疑問なのですが、 最近私の中でのトレンドがありまして、 比較しながら検証していきたいと思うのです。 前提条件 例えば、日付型の2変数が用意されていて、小さい値を…

ifの返却を変数に格納できるんだ

いや、新年早々結構忙しいです。 もうこんな時間です。早く寝ろよって感じですが、、 Rubyにちょっとは慣れてきた今日この頃です。コードレビューで面白いことを聞いたのでメモです。 実際に使えるかどうかは可読性と相談だとは思いますが、、 if-else文で戻…

ActiveRecord::Base#find_in_batchesを使ってみた

Railsでバッチ処理したい時に既存の ActiveRecord::Base#findを使いたいけど、処理件数が多くなりすぎるとメモリ食い過ぎて大変。 なんてことになりそうな場合は、今まではActiveRecord::Base#connectionで直接SQL文を実行してました。 ActiveRecord::Base#c…

Enumerable#detect

Arrayなどで配列を扱ってると、配列の中の一致する値を取り出したい場合があります。 下のコードを書いてコミットしたら、指摘されていいものを教えてもらったので、メモです。 array.each do |data| if data.to_i == 1 return data end end nil のように書…

Rubyでマルチバイト文字数を確認する

仕事でRuby1.8、Rails2.3とか使ってます。たとえば、30文字以上はカットとかバイト数でじゃない場合、 マルチバイトを文字数でカットしたいときにいいものを教えてもらったので、メモメモ ActiveSupportを利用 Railsの場合ですが、結構簡単にマルチバイト対…

MySQLで正規表現を使って制御文字を抽出

Oracleでは使えなかった正規表現がMySQLで使える!!とおもったらOracleも10gから使えてました。 SQLクリニック(1):Oracle 10gの正規表現で文字列操作を極める (1/2) - @IT携帯からユーザ登録などすると意図せずに改行コードなどの制御文字が登録されて…

Railsのインストールができました

http://d.hatena.ne.jp/hotoolong/20100623/1277304296 で、インストールに失敗してたのですが、 ちょっと気になってたので、gemのバージョンを上げるといけました。手順はRubyGems のインストールを参考にしました。 Ruby on Rails 2.3.5 を入れる場合は, R…

さくらレンタルサーバーにRailsのインストールに失敗。。

↓を参考にさせていただいて、インストールしてみました。 さくらのレンタルサーバーに Ruby on Rails をインストールする手順 - Google App Engine+Pythonで脱プログラミング初心者を目指す日記 %gem18 install rails Updating metadata for 1 gems from htt…

まずはインストール

Rubyをはじめてみようかと思い、まずインストールしてみました。 思えば1年以上前にQCon2009に参加して、それ以降やってみたいなと思いつつ手を付けれてなかったので、 まずインストールして触れてみようかと思います。 そのうちRailsもと思いつつ、、これか…