タイトルの通り、gemのコードリーディングを初めてやってみたので手順などメモ。 なぜやるのか 最近gemのコードを読む機会が多くて、大体はREADMEでは分からない情報を取ってきたい時にGitHubリポジトリ内で検索かけつつ読むくらいだったのだけど、 他人のコ…
Rubyにはsortメソッドがあって、その名の通りソートしてくれるんだけど a = (1..9).to_a.shuffle => [1, 2, 8, 7, 4, 3, 9, 5, 6] a.sort => [1, 2, 3, 4, 5, 6, 7, 8, 9] これをsortを使わずに実現したい。 バブルソートで実装してみる。 バブルソートとは …
タイトル通り。 これまであまりファイルの扱いをするような実装をしてこなかったのでメモ。 Ruby...2.4.3 CSV...2.4.8 File.open ファイルアクセスのためのクラス。openに引数を渡すことでファイルオブジェクトを生成する。 File.openとFile.newで何が違うん…
「privateメソッドって外から呼び出せないやつでしょ?」「レシーバを指定して呼び出せないんでしょ?」から抜け出すべく色々試してみた。 ※2.7以降はレシーバにselfをとれるようになったようなのでバージョンを変えて検証してみた。 試してみる $ rbenv loc…
Rubyのバージョンを2.7.0にあげてrake taskを実行したら見たことないエラーが出たので対処法をメモ。 Ruby...2.7.0 Rails...5.1.5 発生したエラー NoMethodError: undefined method `new' for BigDecimal:Class 下記の記事によると、decimal型のカラムがある…
rubyのバージョンを変えた後に新しいbundlerがインストールできずに困ったのでメモ。 Ruby2.4.3(→2.5.0) Rails5.1.5 Amazon Linux AMI release 2018.03 Rubyのバージョンを特定のディレクトリのみ変更 今回、以下のような状況だった。 元々Ruby2.4.3が入っ…
Railsのプロジェクトでbundle installしたところ、mysql2のインストールでエラーになってしまったのでメモ。 Ruby...2.4.3 Rails...5.1.5 mysql2 発生したエラー Fetching mysql2 0.4.10 Installing mysql2 0.4.10 with native extensions Gem::Ext::BuildEr…
ffiが突然インストールできなくなったためメモ。 発生したエラー Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /Users/hako/Project/sample_app/vendor/bundle/ruby/2.4.0/gems/ffi-1.9.23/ext/ffi_c /Users/hak…
RSpecでCSVダウンロードのcontrollerテストを書く方法をまとめていきます。 環境 ruby 2.4.3 Rails 5.1.5 rspec-rails (3.7.2) factory_bot_rails (4.8.2) 完成したソースコード 先にソースコード貼っちゃいます。 まずはコントローラー app/controllers/use…
Dockerコンテナのタイムゾーン変更でハマったのでメモ。 結論から言うと、docker-compose.ymlに環境変数TZを設定すればうまくいった。 環境 Ruby 2.4.3 Rails...5.1.5 MySQL 5.7 Docker 19.03.12 Dockerコンテナ...app(Rails)/ db(MySQL)/ nginx 流れ そ…
久しぶりにRuby記事。 前々から苦手意識が拭えなかった正規表現を理解できたのでまとめておく。 正規表現オブジェクト そもそも正規表現自体がオブジェクト。 きちんと考えれば分かることだけど、今までちゃんと意識したことなかった。 正規表現オブジェクト…
最近生のJSをきちんと勉強し始めて、知らなかったことがちょこちょこ出てきたのでRubyと比較しながら書いていきます。 JavaScriptの型変換 文字列に変換 String()関数を使用 String(1); // => "1" String([1, 2, 3]); // => "1,2,3" String(true); // => "tr…
Railsで開発していて渡ってきた文字列を操作したいなーと思った箇所があったのでメモ。 deleteメソッド delete(*strs) -> String self から strs に含まれる文字を取り除いた文字列を生成して返します。 引用:String#delete (Ruby 2.7.0 リファレンスマニュ…
個人開発でRubyを使うときに、仕事で使っているバージョンより新しいものを使いたいな、と思って別バージョンのインストール方法を調べてやってみたので、まとめておきます。 rbenvのインストール Rubyのバージョン管理にはrbenvが必要になるのでインストー…
最近、無事入社しました。 環境構築をしているところなんですが だいぶつまづいたついでに、今までよく分かっていなかった Homebrewって何してるの?みたいなことがだいぶ理解できたので、書いておきます Homebrewとは macOS専用のパッケージ管理マネージャ…
Railsチュートリアルをやっていたところ、 こんなソースに遭遇しました。 >> a = %w[foo bar baz quux] # %wを使って文字列の配列に変換 ん??この%wって何だ。。 調べたところ、パーセント記法だった。 ドットインストールで学習済みにも関わらず、ピンと…
Rubyで配列に対して繰り返しの処理を行う時は、まずeachを使っていたのですが mapやcollectについてもきちんと勉強し、使いこなせるようにしようと思い 色々試してみました。 mapメソッドとは array.map { |item| block } mapメソッドは、要素の数だけ繰り返…
本日もrubyのアルゴリズム問題から、勉強になった部分を抜粋。 問題 以下の配列から、数を探して何番目に含まれているか結果を返すメソッドを作成してください input = [3, 5, 9 ,12, 15, 21, 29, 35, 42, 51, 62, 78, 81, 87, 92, 93] 自分の解答 def searc…
アルゴリズム問題を解いているとたまにある、 「二桁の整数を10の位と1の位に分解して、それらをどうこう」 みたいなやつ。 「分解」と聞いて真っ先に思い浮かぶのが 私の場合はsplitなんだけど(安易?) splitってstringに使うものだから整数にto_sするの…
有名すぎるアルゴリズムのうちの一つ、fizbuzz問題の応用編を解きました。 一般的なfizbuzz問題 1から100まで数を数える時に、3の倍数なら「fizz」、5の倍数なら「buzz」、ただし15の倍数なら「fizzbuzz」、それ以外はその数を答えなさい。 普通に解くなら、…
繰り返しといえばwhile文かたまにfor文という感じたったのだけど 調べたら他にも便利な繰り返し処理がいくつかあって、 用途によって使い分ける必要があるなぁと感じたので使ってみました。 今回使ったのはupto - 0.upto(10) do |i| (hamlで書いてます) iが…
まだRubyとRailsの学習を初めて3週間程度の初学者ですが、 今日「初学者ならではの目線」である疑問が浮かびました。 def review_average reviews.average(:rate).round end 何かの値を返してくれるだけのために定義するメソッドをゲッターと呼びますが、 …
「1:多」の関係性とは 例)ツイッターの場合 ユーザーがツイートをすると、そのツイートに対してコメントが投稿される。 この時、 ツイートが複数のコメントをもち、一つのコメントは必ずどれかしらのツイートに所属している関係性が成り立つ。これをプロ…
メソッドとは何なのか Rubyにおけるメソッドの考え方が難しくて、概念を理解するまでに何度もつまづいたので残しておこうと思います。 どういう時にメソッドを生成するのか ⇨何かの値を定義したい時。 それなら、変数でいいのでは? ⇨変数だと、変数に代入さ…
例) def dog_info(dog,input) puts dog[input] end dog = {name: "コロン", type: => "チワワ", gender: => "メス"} puts "以下から知りたい情報を一つ選んでください ・name ・type ・gender" input = gets.chomp dog_info(dog,input) 解説) 以下の情報を…
rubyにおけるwhile文の仕組み よくif文と混同されることがありますが、 while文もif分も「この条件の時にこれをしてくださいよ」と指示をするものです。 if分の場合、処理を行うかどうかの条件はtrueかfalseによって判断されます。 つまり、基本形は「これが…