かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

Ruby

RSpec Capybara 非表示な要素のテストにハマる

- 非表示になっている要素には `visible: false` オプションを使う - 非表示になっている要素の内容をテストするには `find(selector, visible: false).text(:all)` を使う

RSpec Capybara href の無い a タグにハマる

RSpecの feature spec で href の無い a タグのテストをしようとしてハマったのでメモ ボタン / リンクの存在 ボタン button や submit <button>ボタンのラベル</button> <input type="submit" value="ボタンのラベル" /> expect(page).to have_button 'ボタンのラベル' リンク a タグはボタンではなくリンクでないとマッチし…

Ruby ランダムに true / false を返したい

モックアップを作っていて、条件によって表示/非表示が分かれる要素があり、ランダムで表示/非表示させたいと思いました。 ランダムに 0 / 1 を返す ぱっと思いついたのが他のJavaScriptとかでもよくやる 0 || 1 を返す方法。 Random.rand(0 .. 1) Random#ra…

Ruby benchmark-ips で処理のベンチマークを取る

で Ruby の case 文でクラス名を判定する時に、クラスそのものでもclass.name でも判定できるので、どちらのほうが処理が速いのか気になりました。 JS脳的なイメィジだとなんとなくStringでの完全一致の方が速そうな気がしたのでど、どうなんでしょう?と先…

Ruby Class を case 式で判定しようとしてハマったメモ。

Ruby は深く触ってないので初学者マンです。 Rails の複数のクラスで共通して使われている Decorator 内で case 式でクラスを判定して返す値を変えていた部分で self.class.name の文字列で判定するのではなく self.class で判定すればいいよ。とアドバイス…

Ruby gem install bundler で Permission denied エラーになった

こんにちは。今日は6月6日、D-dayだった日です。そんな日にエラーを出したのでメモ。 rbenv で Ruby のバージョンを管理していて、rbenv でインストールした別の Ruby のバージョンを切り替えた後に gem install bundler しようとしたら Permission denied @…

RSpec include_context って何

プロジェクトの RSpec をみていて、 include_context 〜 という文章があり共通処理をしているっぽいけど、どういうものなのか知らなかったので調べたメモ include_context ref. shared context - Example groups - RSpec Core - RSpec - Relish shared_conte…

RSpec Capybara アクセスしてるページのURLを知りたい。

Capybara で visit してアクセスしてるページの情報をチェックしたい current_host を使う current_url ⇒ String Fully qualified URL of the current page. ref. Class: Capybara::Session — Documentation for jnicklas/capybara (master) 他にも色々ある…

RSpec メソッドの有無をテストしたい

メソッドがある事をテスト let(:foo) { create :foo } it 'foo has #method' do expect(foo).to respond_to(:method) end 又は expect(foo.respond_to?(:method)).to be true メソッドがない事をテスト let(:foo) { create :foo } it 'foo has #method' do e…

Ruby キーワード引数で見通しを良くするゾ

Ruby には 2.0 から導入されたキーワード引数という引数の値を変数名に割り当てメソッドを呼び出す方法があるそうです。(Ruby 2.1 からデフォルト値のない Requiredキーワード引数 が使えるようになった) キーワード引数のメリット メソッドに渡している引…

RSpec Rails Decorator で undefined method にハマる

やっはろー!RubyもRailsもほぼ初心者マン即実戦で四苦八苦してる日々です。 ActiveDecorator が使われている Rails のプロジェクトで decorator のテストを RSpec で書いていた所、decorator にあるはずのメソッドが undefined method になりテストがコケて…

Ruby Haml タグやコンテンツが色々入る要素にはまる。 SyntaxError - Illegal nesting

Hamlテンプレートでタグやテキスト要素が混在したコンテンツを作成していてSyntaxErrorになったのでメモ。 エラーになる例 %div 2019年4月11日から %strong<> アイカツ! が再放送だよ!! %a(href="aikatsu")< %i.icon-help> 詳しくはコチラ! Haml::SyntaxE…

Haml タグのあるテキスト中のスペースをコントロールしたい

とあるプロジェクトのお手伝いをしていてHamlに入門しました。 雰囲気pugなんであまり変わらないかなとというイメージだったのですが、テキスト中にタグを入れてスペースが必要だったりすると結構メンドーだったのでメモ タグの前後にスペースのあるテキスト…

RubyをアプデートしてRails 5 をインストール

1.Homebrew 自体をアップデート $ brew update 2. rbenv, ruby-build をアップデート $ brew upgrade rbenv ruby-build 3. rbenv で Ruby をアップデート インストール可能なRubyのバージョンを表示 $ rbenv install -l Ruby をインストール $ rbenv install…

Ruby Slim タグなどを含んだ変数をエスケープせずに出力したい。

Slim テンプレートでの変数の出力の方法は、こんな感じに=で出力することができます。 div p= @value 文章中や、属性中に変数展開させる場合は#{変数名}で出力します。 p a.btn src="edit/#{@id}" 編集 しかし、上記の方法ではHTMLタグや"などを含んだ文字列…

Ruby Stylusでnibを使いたい。

前回 Ruby(sinatra)でStylusを使えるようにしました。 しかし、このままではSassで言うところのCompassにあたるnibを使うことができていませんでした。nibを使えるようにした際のメモです。 nibはnode(npm)でインストールしておく必要がある $ npm install n…

Ruby (2.2.0) 自分で作成したファイルを読み込む(require)にハマる

Ruby(2.2.0)を使っていて自作したファイルを読み込み(require)する際にハマったのでメモ。 結論から言えば自作ファイルを読み込ませる際は相対パスで読み込むrequire_relativeを使うのが良さそう。 ファイル構成と読み込み ファイル構成 /app |- main.rb # <…

Ruby Bool値かどうか型チェックしたい。ついでにis_bool?メソッドを作ってみた。

Rubyで変数がBoolean型かどうかチェックしたい。 かなりレアケースな気がするけれど、この前参加した勉強会で要望があったのでトライしてみた。 RubyのTrueとFalse false ... false, nil の時 true ... false, nil 以外全てtrue Rubyには is_bool? という関…

Ruby Sinatraでstylusを使いたい。

久々にRubyの勉強に戻ってきました。 作りながら学ぶRuby入門 第2版作者: 久保秋真出版社/メーカー: SBクリエイティブ発売日: 2013/11/21メディア: Kindle版この商品を含むブログ (3件) を見る けっこう古い書籍ですが、1つのアプリを作りながらRubyに慣れよ…

Ruby mysql2のメモ

RubyでMySQLとデータのやり取りをしたいと思いました。 gemで探すとライブラリがヒマラヤ程たくさん出ててどれが良いのか良く解りませんでした。。。 こちらの記事を参考に、とりあえずmysql2を使ってみましたのでメモ データを取ってきてループして表示させ…

Ruby 日付が存在するか知りたい

require "date" p Date.new(2015, 2, 29) #=> `new': invalid date (ArgumentError) 存在しない日付でDateオブジェクトを作ろうとするとArgumentErrorで死んでしまうので、Dateオブジェクトを作る前に日付が存在するか知りたい。 Date.valid_date?を使う Dat…

Rubyをアップデートしようとしたらrbenvに最新版が表示されない時の対処法

chaika.hatenablog.com rbenvで管理しているRubyのバージョンを上げようとしたら、ruby-build、rbenvを最新版にしていても最新版のRubyのバージョンが表示されないという事態に遭遇しました。 ruby-build、rbenvを最新版にする $ brew upgrade ruby-build rb…

Ruby ループで配列のindexを取得したい。

Rubyのeachメソッドはハッシュだとキーが一緒に取得できるが、配列だとインデックスは取得できない。 HashとArray(配列)のeach Hash hash = {commander: "Mika", gunner: "Aki", driver: "Mikko"} hash.each{|key, value| puts "#{key} => #{value}" } Array…

Ruby Float(浮動小数点数)にはまる。

ルビーオンレールズ— inumatic (@ken_c_lo) December 25, 2015 ルビーオンレールズいったいなにものなんだ— るっか@旅に出ます探さないでください (@lucca0show) March 7, 2016 ルビーオンレールズできなくて許されるのは小学生までだよねー。クスクス。と言う…

Ruby 配列の要素へのアクセス方法

オブジェクトへの参照を順に並べたもの。配列は個々のオブジェクトへの参照を保持している。該当する要素が存在しない添字の場合nilを返す arg = [1, 2, 3] p arg[3] # => nil 負の添字 負の添字は末尾から逆順に要素を指す番号と解釈される。-1が最後の要素…

Ruby rbenvで使ってるRubyのバージョンを変更するぞぃ

1. Homebrewをアップデード $ brew update 2. ruby-build をアップグレード rbenvでインストールできるリストを最新にするために必要っぽい $ brew upgrade ruby-build 3. rbenvで違うバージョンのRubyをインストール インストールできるリストを表示 $ rben…

Rubyのtrueとfalse

Rubyのtrueになる時とfalseになる時のメモ false ... false, nil の時 true ... false, nil 以外全てtrue 0 なので、0 はtrueになる。 p 0 ? true : false # => true nil nilはfalse。 p nil ? true : false # => false nil.to_iすると0になるのでnil.to_iは…

Ruby 文字列と数値の連結

文字列どうしの連結 a = 'hello' b = 'world' puts a + ' ' + b # -> hello world + で文字列連結できる 文字列と数値の連結 文字列どうしのように + だけだとエラーになってしまうので、数値を.to_sで文字列化してあげる必要がある a = 'No.' b = 100_000_0…

rbenvを入れたらcompassが動かなくなった時にすること。

rbenvで別バージョンのRubyを使うように変更したらgruntでcompassを使っていたプロジェクトで下記のようなエラーが出てコンパイル出来なくなってしまいました。 » grunt compass:dist Running "compass:dist" (compass) task rbenv: compass: command not fo…

Ruby Mac OS10.10にrbenvでRubyをインストールする

下準備 1. Xcodeをインストールする App StoreからXcodeをインストールする。 2. Command Line Tools for Xcodeをインストールする Xcodeを起動 メニューからXcode>Open Developer Tool>More Developer Toolsを選択。 ブラウザのページが開くのでCommand Lin…