Ruby
メソッド名の末尾に?が付くメソッド(勝手に?系メソッドと呼びます)がたくさんありすぎてよく分からなくなったのでまとめました。 Ruby Rubyのメソッド。true/falseを返します。 nil?: オブジェクトがnilか? empty?: インスタンス(配列、ハッシュ、文字列等)…
RubyをM1 macにインストールする際にBUILD FAILED が表示されインストールできなかったので解決法を調べました。 結論 下記コマンドでインストールできる。 $ RUBY_CFLAGS="-w" rbenv install x.x.x 原因とエラー詳細は後述します。 環境 今回インストールし…
ぼっち演算子の使い方をすっかり忘れていたのでまとめておきます。 結論 ぼっち演算子&. とはレシーバーがnil だった場合にNoMethodError ではなくnil を返すRubyのメソッド呼び出しの演算子です。 メソッド呼び出しで .の代わりに &.を使うことができます。…
曖昧だったVSCodeへのsolargraphの導入について整理したのでまとめておきます。 結論 VSCodeでsolargraphを使うにあたって以下の2つが必要。 VSCode拡張機能Ruby Solargraph solargraph gem 下記手順で導入、設定する。 VSCode拡張機能Ruby Solargraph の導…
Sinatraを使ったメモアプリを開発中です。 rubyファイル内の長くて読みにくいSQLを読み易く記述する方法を調べました。 結論 ヒアドキュメントを使うと長いSQLの可読性が上がるかもしれません。 rubyファイル内のSQLは次のように書き換えることができます。 …
FBCのSinatraとDBを使ったメモアプリの開発に取り組んでいます。 DBに保存するレコードのRPIMARY KEYとしてSecureRandom.uuid で生成した文字列をCHAR型のカラムに保存しようと考えています。 最大文字列長をCHARに設定しようと思ったのですが、SecureRandom…
Sinatraのメモアプリのプルリクでディレクトリ・トラバーサルの危険性があると指摘されました。 初めて聞く言葉だったのでディレクトリ・トラバーサルについて調べました。 結論 ウェブアプリケーションの中には、外部からのパラメータにウェブサーバ内のフ…
Sinatraのメモアプリのレビューの中でhelperに定義してメソッド名に対してアドバイスを頂きました。 「メソッド名は動詞で始める」と思い込んでいましたが、間違いだったと気付くことができたので良かったです。 結論 次のような処理内容のメソッド名は動詞…
Sinatraのメモアプリの終了条件であるXSS対策について調べました。 結論 文字コード指定とエスケープ(サニタイジング)を行うとXSS対策できる XSSとは 悪意あるクライアントサイドのコードをウェブサイトに挿入するセキュリティ攻撃です。 引用: Cross-site s…
値の有無で真偽値を返すようなメソッドを作る際にnil? とempty? の違いが分からなかったので調べました。 結論 nil? は存在しているか、empty? は空かどうかで真偽値を返す nil? 当たり前だけどnil のみtrue を返す。 ''.nil? => false [].nil? => false fal…
Sinatraのメモアプリでhelper 読込の際にrequire とrequire_relative の使い分けが分からかったので調べました。 結論 gemなどのライブラリの読込にはrequire、helperなどの自前で用意したファイルの読込にはrequire_relative を使う。 相違点 参照方法が異…
Sinatraを使ったメモアプリの開発時にerbがフォーマットされなかったので設定しました。 結論 vscodeの拡張機能のBeautifyを使う。 なぜBeautifyなのか 似たようなフォーマッタとして拡張機能のPrettierがあるがerbファイルが上手くフォーマットされないらし…
フィヨルドブートキャンプの課題、Sinatraを使ったメモアプリの開発はまだまだ終わらないです メモ一覧は表示できましたが作成順に並んでいないのが非常に気持ち悪い。 複数のファイルを取得して作成日時で並び替えたいなと思ったので調べてみました。 結論 …
引き続き、フィヨルドブートキャンプの課題としてSinatraを使ったメモアプリの開発に取り組んでいます。 今回の課題では作成したメモのデータの管理にDBを使わず、ファイルに読み書きしてデータを管理しなければなりません。 そこで今回は他の受講生の日報を…
フィヨルドブートキャンプの課題としてSinatraを使ったメモアプリの開発に取り組んでいます。 Sinatra のルーティングに使われる: と* の理解がいまいちすっきりしなかったのでメモ。 結論 : は名前付きパラメータ、* はワイルドカード : の値はparams['パラ…
JSONファイルから取得したハッシュのキーがデフォルトで文字列だったのでシンボルにしたい。 結論 JSON.load、JSON.parse 共にsymbolize_names オプションをtrue にする JSON.load のみ追加でproc をnil、create_additions オプションをfalse にする JSONフ…
RubyのJSONライブラリのJSON.load とJSON.parse の違いを調べた。 結論 引数によって使い分ける。 JSON.load: 引数がJSONファイル JSON.parse: 引数がJSON文字列 JSONファイルをRubyで読み込む 読み込み用のdata.json をmain.rb で読み込んで出力してみます…