Ruby
やりたいこと Ruby 用の google-api-client gem を使い、検索エンジンで検索ワードを指定して検索結果(順位)を取得したい。 前提 $ ruby -v ruby 2.7.1 その他 Custom Search JSON API | Programmable Search Engine に登録している API_KEYを取得している…
Ruby で Google 検索順位を取得するときの選択肢として、以下の2つがある。 Custom Search JSON API | Programmable Search Engine Google Search API - SerpApi Custom Search JSON API Custom Search JSON API | Programmable Search Engine Google の公式…
rbenv で Ruby の管理をしている場合、バージョンを切り替えたり、gem をインストールした後はrbenv rehashをする必要があった。 しかし、2014年のアップデートにより、rbenv rehashをする必要はなくなった。 rbenvでrehashがいらなくなった Bring rbenv-gem…
Rubyのany?とは配列に対して、要素がどれかひとつでも条件に合致したら真を返すメソッド。 すべての要素が偽である場合に false を返します。真である要素があれば、ただちに true を返します。 ブロックを伴う場合は、各要素に対してブロックを評価し、すべ…
require "date" #月末 p last_day = Date.new(2020, 8, -1) #月初 p first_day = Date.new(2020, 8) $ ruby dates.rb #<Date: 2020-08-31 ((2459093j,0s,0n),+0s,2299161j)> #<Date: 2020-08-01 ((2459063j,0s,0n),+0s,2299161j)> 日付が入った配列を作りたい場合。 dates = [] (first_day..last_day).each do |date| dates << date end puts da…</date:></date:>
勉強用のためにRSpecをセットアップしたい場合の手順。 $ md rspec-setup $ cd rspec-setup $ bundle init #追加 gem "rspec" $ bundle install $ bundle exec rspec --init specファイル(テストファイル)を作成。 $ touch spec/say_spec.rb spec/say_spec…
たとえば、こんな2つのハッシュがあるとする。 smart_phones = { apple: :iphone, google: :pixel, samsung: :galaxy, } other_smart_phones = { huawei: :p30, sharpe: :aquos } これらのハッシュをがっちゃんこしたい場合、mergeメソッドを使える。 puts s…
結論 Ruby で__END__と書くと、それ以降のコードはプログラムではなくデータとして読み込まれる そのデータは、DATA という定数を使ってアクセスできる __END__と DATA はセットで使われることが多い 例1 puts DATA __END__ いいハンターってやつは、動物に…
6時間くらいハマってエラい目にあったので、メモとして残します 環境 問題 うまくいかなかった解決方法 原因 解決 rbenv に関わるものをアンインストール rbenv をインストール 他の問題も解決 なぜ rbenv-communal-gems を使っていたのか? rbenv-communal-…
Ruby の nil とはなんぞや? Rubyのメソッド 何も存在しないということを表す、NilClassのオブジェクト nil は NilClass クラスの唯一のインスタンス Rubyでは、false または nil であれば偽として判定される # 空オブジェクトではfalseになる irb(main):011…
オブジェクト指向プログラミングの3大特徴である、継承について、ドラゴンボールに例えてみた。 まず、悟空とベジータをクラスで考えるとこうなる。(細かいツッコミどころがあるが、概念をざっくり理解するためなので無視してください) # 悟空 class Goku …
問題 Rubyを勉強していると頻繁にエンカウントするこんなやつ。 attr_accessor :hoge attr_reader :hoge attr_writer :hoge メソッドがやっていることはなんとなくわかるが、いまいちしっくりこない なんだかモヤモヤする という感情が湧いたので、言語化し…
Ruby超入門Hash章の問題で「"caffelatte"で使われている文字ごとにその回数をカウントしてください」ってのがあってそこそこの手数がかかる良問だと思っていたのですが、Ruby2.7で入ったEnumerable#tallyを使うと2メソッドで解けちゃうようになりましたね...…
@booksのページネーションを取得したい場合。 コントローラー側 app/controllers/books_controller.rb def index @books = current_user.books.order(:id).page(params[:page]) end .page(params[:page])でページネーションに必要な情報を取得。 ビュー側 # …
Ruby 三項演算子のシンプルな例 Rubyでよく見かけるこんな記述。 n == 1 ? hoge : foo これは三項演算子(さんこうえんざんし)と呼び、次のような動きをする。 nに1が代入されているか確かめる もし1が代入されていたら、hogeメソッドを実行する 1じゃなか…
rubocop --auto-correct bundle execをつけるなら bundle exec rubocop --auto-correct -aに省略もできる。 bundle exec rubocop -a
手順 Gemfile上からアンインストールしたいGem名を削除 bundle updateを実行
環境 Mac/Homebrew rbenv 1.1.2 ruby 2.6.5 問題 bundle exec rubocop をしてrubocopを動かそうとしたら、次のエラーが出た。 bundler: failed to load command: rubocop (/Users/ユーザーネーム/.rbenv/versions/2.6.5/bin/rubocop) 解決 rbenvで使用中のRu…
環境 Mac/Homebrew rbenv 1.1.2 ruby 2.6.5 問題 rubocopを動かそうとした。 bundle exec rubocop 以下のエラーが出た。 Error: The `Layout/IndentFirstArgument` cop has been renamed to `Layout/FirstArgumentIndentation`. (obsolete configuration fou…
rbenvでRuby 2.7.0をインストールしてさぁirb立ち上げようとしてirbコマンドを打ったらこんなメッセージが。 `find_spec_for_exe': can't find gem irb (>= 0.a) with executable irb (Gem::GemNotFoundException) 単にirbをインストールしてないだけだった…
問題 Mac/Homebrew環境に Ruby 2.7.0 を rbenv でインストールしようとして、rbenv install 2.7.0をしても「そんなバージョンないよ」と言われてしまった。 rbenv install --listでインストールできる Ruby のバージョンを探しても 2.7.0 が出てこない。 原…
Ruby 2.7.0 になって以下のような警告メッセージを見る機会が増えた。 warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call deprecated とは、「非推奨である」ということ。 以下の記事で解説され…
bundle install でパスを指定するコマンド。 bundle install --path vendor/bundle プロジェクトディレクトリ配下のvendor/bundleにgemがインストールされる --pathでインストール先を指定できる 一度パスを指定したら覚えてくれるので、次回以降はパス指定…
自分がRubocop警察に指摘されたエラーの解決策をまとめた。 Rubocopで指摘されたエラーたち Add an empty line after magic comments Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping Final newline m…
ちょっとハマったが解決したのでメモ。 問題 bundlerでrubocopをインストールした。 Gemfile gem 'rubocop', require: false gem 'rubocop-performance' gem 'rubocop-rails' これでコマンドラインから rubocop をするとルボコップが走ってファイルが解析さ…
問題 環境 vagrant Ubuntu Mac Sinatraで使いたい の環境でRubygemsのpgをbundlerでインストールしようとした。 Gemfile gem "pg" インストール。 bundle install --path vendor/bundle そしたらこんなエラーが出た。 An error occurred while installing pg…
簡単にCSRF対策ができるRubyのgem「rack_csrf」をbundlerでインストールするメモ。 Gemfileに以下を追記。 gem 'rack_csrf' インストール。 bundle install --path vendor/bundle requireする場合は require "rack/csrf" bundlerは使わない場合。 gem install…
Vagrant + Linux の開発環境に rbenv を使って Ruby をインストールするためのメモ。 環境 rbenvをインストール rbenv を使う Ruby をインストール 「Cコンパイラがないよー」と言われたら Rubyを使う 参照 環境 Vagrant Ubuntu MacOS rbenvをインストール M…
Rubyでファイルをコピーする方法。 Fileクラスを使う。 open("bar.txt") do |input| open("foo.txt", "w") do |output| output.write(input.read) end end まずはopen.txtというファイルを開き、データをinputとして引数にとる。 その後、書き込みたいファイ…
Rubyで見かけるアンダーバーふたつで囲まれた奴ら。 __FILE__ __dir__ き、きみたちは一体何?どこからきたの? __FILE__:現在実行しているファイル ruby_basic.rbというファイルに以下のコードを書いて実行してみる。 puts "__FILE__: #{__FILE__}" => __F…