nilはクラスであり、メソッドの使用ができる

sum関数でエラーがでた 下記のメソッドを使いたいとします。 def calc_score [@first_shot.point, @second_shot.point, @third_shot.point].sum end インスタンスはこうやって作られます。 def initialize(first_shot, second_shot = nil, third_shot = nil)…

テストでタイムゾーンを考慮した

テストのプラクティスにて Date型への変換メソッドのテストを行いました。 テストの観点 対象のメソッドは下記です。app/models/report.rb class Report < ApplicationRecord belongs_to :user has_many :comments, as: :commentable, dependent: :destroy v…

destoroyとnullfityについて(ポリモーフィックあり)

はじめに railsguides.jp 4.2.2.4 :dependent オブジェクトのオーナーがdestroyされたときの、それに関連付けられたオブジェクトの扱いを制御します。 ユーザーと日報とコメントと・・・ Aというユーザー(User)がいます。 日報(Report)は、N個書けます。…

ユーザーの情報をログインユーザーにする書き方

状況: ログインしているユーザーにて、日報(report)を作成しようとするとき。 日報を新規作成時のControllerの記述について、書き方のメモ。 User と Report は1 : Nの関係性。コード: app/controllers/reports_controller.rb ①これと、 def create @repor…

NULL禁止制約を後付けする際の注意点

データメンテについて すでにあるカラムをNULL禁止にしようとする際の注意点を教えて頂いたので、以下にまとめます。 参考コード1 まず最初に記述したコード class ChangeColumnToAllowNull < ActiveRecord::Migration[6.1] def up change_column :comments…

NULL禁止制約を後付けする際の注意点

データメンテについて すでにあるカラムをNULL禁止にしようとする際の注意点を教えて頂いたので、以下にまとめます。 参考コード1 まず最初に記述したコード class ChangeColumnToAllowNull < ActiveRecord::Migration[6.1] def up change_column :comments…

フィヨルドブートキャンプの取り組み方とアウトプットについて振り返る

はじめに この記事は、 フィヨルドブートキャンプ Part 2 Advent Calendar 2021 - Adventar 5日目の記事です。 フィヨルドブートキャンプの学習 現在フィヨルドブートキャンプにて学習中です。 ※以下、FBC(フィヨルドブートキャンプ)と表記。 学習はプラク…

git push --force-with-lease で間違った(必要のない)コミットをなかったことに

git操作中、例えば入れたくないファイルをgit addしてcommitしてpushしてしまった。 ※コミット前に、diff --stagedで確認するのはもちろんですが。そういうときに、git push --force-with-leaseを使用して、コミット自体をなかったことにしようという話です…

ruby version 変更

ゴール インストールされていない、Rubyの3.0.1をインストールする。 # インストールされているバージョン確認 FJORD % rbenv versions system 2.5.8 2.6.5 2.7.2 * 3.0.2 (set by /Users/myMBP/.rbenv/version) # バージョン指定にて、インストール FJORD %…

rails server でちゃんと終了できていなかった時のこと。

はじめに 現在FBCにて、Railsのプラクティスにいよいよ取り組んでいます。 Railsの教科書にチャレンジしていますが、その中で起きたエラー内容についてちょっと調査してみました。tatsu-zine.com エラー: エラー NameError in BooksController#show uniniti…

git checkout -b のあとにやること

ブランチ作成あとにやること、ToDo まずは、ローカルに作成と移動。 git checkout -b develop_memo-app Switched to a new branch 'develop_memo-app' 確認する。 sinatra % git b -a Develop * develop_memo-app ★登録したい develop_tmp main remotes/orig…

【github】ローカルでブランチ作成して、リモートにプッシュして反映させるまで

実行コマンド 新規ブランチ作成&移動 1. git co -bローカル確認 2. git b -aリモートへプッシュ 3. git poh >git push origin HEAD リモート確認 4. git b -a 実際の流れ sinatra % git b -a Develop_1 develop develop_db develop_tmp main remotes/origin…

【github】Githubのウェブ上で切り出したブランチをリモート・ローカルに反映させる

※git bは、git branchのことです。 状況 Github.comのウェブ上で新規ブランチを作成したとする。 develop_tmp ★これが今回反映したいブランチ ウェブ上で作成しただけでは、リモートブランチへの反映はない。 (追跡ブランチ) リモートブランチに反映させる…

createdb のエラー対応

実行コマンド: createdb hoge エラー内容: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory Is the server running locally and accepting connections on that socket? 解決策: sinatra % brew services…

RubyとPostgreSQLとsinatraと(その壱)再起動せえ。

# PostgreSQLために gem install pg をしたいのに、エラー?まずは、Homebrew を使って PostgreSQLをいれる。qiita.com brew update brew install postgresql ここで、エラー gem install pg /Users/myMBP/.rbenv/shims/gem: line 21: /usr/local/Cellar/rbe…

式展開のある記述では、”” ダブルクオーテーションを使え。

# 問題です。どちらが正しいでしょうか?A: redirect to("/memos/#{params[:id]}")B: redirect to(‘/memos/#{params[:id]}’) 答えはCMのあとで。 # 答えの時間⭕️: ```rb redirect to("/memos/#{params[:id]}") ```❌: ```rb redirect to('/memos/#{params…

sinatraのエスケープ処理について

helpers do def h(text) Rack::Utils.escape_html(text) end end erbなら以下.alert()" %> stackoverflow.com sinatrarb.comtwinbird-htn.hatenablog.com

ruby sinatra json 困ったらこれをみろ。のリンク集

初歩:pikawaka.compikawaka.com twinbird-htn.hatenablog.com uxmilk.jp 中: rightgo09-ruby.hatenadiary.org リファレンス: docs.ruby-lang.org docs.ruby-lang.org docs.ruby-lang.org get '/memos' do File.open('storage/*', "r") do |file| @hash = …

【sinatra】bundle execコマンド実行時にエラー Server handler (thin,puma,reel,HTTP,webrick) not found

sinatra % bundle exec ruby app.rb/Users/myMBP/work/FJORD/sinatra/vendor/bundle/ruby/3.0.0/gems/sinatra-2.1.0/lib/sinatra/base.rb:1755:in `detect_rack_handler': Server handler (thin,puma,reel,HTTP,webrick) not found. (RuntimeError) from /Us…

zshにはtreeコマンドがない。

対策: brew install treeHomebrewでインストールすること。

sinatra 最初の一歩

はじめに 現在sinatraでの簡易メモアプリを作成中です。 当記事では、ブラウザにハローワールドするまでをメモしておきます。 参考記事: qiita.com bundle init を実行すると、Gemファイルができます。そして、 gem 'sinatra'を追加して、 bundle addコマン…

新規でリポジトリ作成。README.mdをコミットする。

リポジトリの新規作成からの流れのまとめ。今回はREADMEをコミットメッセージをfirst commit として、プッシュしてmainブランチに反映させたい時の手順です。READMEは、リポジトリの新規作成時にGithubにて作成が可能です。ここを選択すると、自動的にコメン…

gemとbundler

プラクティス内で、sinatraを使いだしたのですが、 タイトルのbundlerってなんだ〜?だったので、簡単にまとめます。 bundlerとは? 毎回gem入れてたら、めんどくさいし思いので必要なものを入れ込むための管理システム 1 gem install bundler まずはbundle…

gitエラー パーミッションの差異でcoできない時

チェックアウトしたいが、下記のエラー git checkout pr_bowling error: Your local changes to the following files would be overwritten by checkout: 05.ls/ls.rb Please commit your changes or stash them before you switch branches. Aborting diff …

RUBOCOPメモ

C: Metrics/MethodLength: Method has too many lines. [21/20] def display(file_paths, opt) ... ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ C: [Correctable] Layout/IndentationConsistency: Inconsistent indentation detected. unless opt['l'] ... ^^^^^^^^^^^^^^…

【Ruby】引数の* アスタリスクって、 Nan - Nan ?

たまに見かける* や *hoge、** の意味について調べました。 めっちゃ簡単に纏めると def (a, *b) 複数の引数をまとめて配列として受け取ることができます。 def (a , *) 受け取った引数を無視する def (a, ** ) 複数の引数をhashにする。 可変長引数のケース…

ハッシュで値を管理することで合計値や最大値をわかりやすく取得する

前提: data配列に、キーblocksにて格納していた値を取り出して、 Array#sum 渡すことで合計値のtotalを算出している。 block_total = a_data.sum { |data| data[:blocks] } total = "total #{block_total}" またハッシュへの格納方法については下記の様にも…

【Ruby】RBSって、Nan - Nan ?

オーバーロードの質問時にメンターの方から教えてもらった。 Rubyの特徴の型に縛られない自由さ、と相反する様な型チェックのための仕組み。 正直完成されているので、記事の案内に留めようと思います。。 実際に手で動かして理解できる記事です。ありがたい…

【Ruby】デフォルト引数やキーワード引数って、 Nan - Nan ?

デフォルト引数やキーワード引数について調べたことを取りまとめました。 デフォルト引数: キーワード引数 デフォルト引数: def foo(bar, baz = 'World', qux = '!!!') p "#{bar}、#{baz + qux}" end # 実引数を省略した場合デフォルト値が代入される foo(…

【Ruby】ダックタイピングって、Nan - Nan ?

ダックタイピングとは? "If it walks like a duck and quacks like a duck, it must be a duck"(もしもそれがアヒルのように歩き、アヒルのように鳴くのなら、それはアヒルに違いない) 意訳 「オブジェクトがアヒルのように歩き、アヒルのように鳴くメソ…