2021-01-01から1年間の記事一覧
この記事は情報セキュリティアドベントカレンダーの12日目の記事です。 開発組織でセキュリティをある程度のレベルに担保するための有効な施策として既にセキュリティ対策が施されているフレームワークを利用するようにする、というものがあります。 自分の…
オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方作者:Sandi Metz技術評論社Amazon 上記の本の7~9章を読んで印象に残った部分をまとめました。 7章 継承の手法を使い「ロール(役割)」を共有する解決法につい…
オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方作者:Sandi Metz技術評論社Amazon 上記の本の4~6章を読んで印象に残った部分をまとめました。 4章 オブジェクト指向アプリケーションは「クラスから成り立つ」…
オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方作者:Sandi Metz技術評論社Amazon 上記の本の2~3章を読んで印象に残った部分をまとめました。 2章 変更が簡単であることの定義 変更は副作用をもたらさない 要…
ユーザーストーリーマッピング作者:Jeff PattonオライリージャパンAmazon 上記の本を読んでいて、13章から18章まで各章ごとに印象に残ったことをメモりました。 13章 オポチュニティから始める 浮かんだばかりの大きなアイデアはエピックと呼んだりオポチュ…
ユーザーストーリーマッピング作者:Jeff PattonオライリージャパンAmazon 上記の本を読んでいて、7章から12章まで各章ごとに印象に残ったことをメモりました。 7章 より良いストーリーテリングのために 以下のようなシンプルなテンプレートを使って会話を始…
ユーザーストーリーマッピング作者:Jeff PattonオライリージャパンAmazon 上記の本を読んでいて、0章から6章まで各章ごとに印象に残ったことをメモりました。 0章 まず最初に読んでください 言葉で表現された文章が正確な製品の実態を示すものではない スト…
Ransackでは特定のモデルのカラムだけでなく、そのモデルと関連する他のモデルのカラムでも検索を行うことができる。 例えば、Userモデルに1対多で紐づくCommentモデルのcontents属性で検索したい場合 <%= search_form_for(@q, url: user_search_path) do |f…
ちょっと仕事で調べることがあったのでメモ。 メールサーバには2種類があって、MTA(メール転送サーバ)とMUA(メールユーザエージェント)があって、メール転送サーバはDNSが持っているMXレコードのアドレスのサーバにメールを転送する。 このメールを転送して…
Railsで開発していると検索フォームを作成することがよくあると思います。 今日は、そのときよく使われるRansackについてまとめておこうと思います。 基本的な使い方 def index @q = User.ransack(params[:q]) @users = @q.result end のように特定のパラメ…
Rails 6.1以上になってCSVなどをダウンロードさせるコントローラのアクションに def download render( csv: 'users_list', template: 'users/download.csv.ruby' ) end のように書いているとRSpecの実行時に DEPRECATION WARNING: Rendering actions with '.…
Railsのモデルでenum値を扱うとき、enumerizeというgemを使うと便利です。 # Gemfile gem 'enumerize' class Task extend Enumerize enumerize :status, in: { pending: 0, todo: 1, done: 2 } end と書くと、 Task = Task.new(status: 'pending') #=> valid…
Railsで開発していると if Rails.env.production? # production環境用の処理 elsif Rails.env.staging? # staging環境用の処理 else # それ以外の環境用の処理 end という風に環境ごとの処理を書いたり、config/environments以下のproduction.rbやstaging.rb…
画面を作成していると単純に要素を横に伸ばしたりでスマホとPCの表示が作れず、要素の順番や配置が変わってしまうことがあります。 その度合いがまるきり別物ならPC版とスマホ版で別のテンプレートを使えばよさそうですが、順番が数カ所違う程度ならスマホ版…
レコードがあることを条件にしたいとき、findの代わりにexists?を使う if User.find_by(email: "...") # something.todo end のとき、findやfind_byではActiveRecordのインスタンスが生成されてしまう分遅いので、存在確認をしたいだけなら下記のようにexist…
uniquenessバリデーションを使うと、その項目の中で一意であるようにバリデーションがかけられます。 class User validates :email, uniqueness: true end とすると、emailはUserの中で一意となるようにRails側でバリデーションをかける。 これを、Userが会…
RSpecでテスト用のファイルを読み込む RSpecでテスト用のファイルを読み込む際はデフォルトでは spec/fixtures/files にファイルを置いて file_fixture("example.txt").read とすると、ファイルの中身がspec中で呼び出せる。 ファイル中にHTMLやJSONのレスポ…