カクカクしかじか

技術的なアレコレ

2019-03-01から1ヶ月間の記事一覧

OSS初心者がRailsにプルリクエストを送ってマージされるまでの一部始終

qiita.com

Vue.jsでformタグ内の@clickイベントから画面ロードなしでDOMを更新出来ない問題の解決法

問題の概要 Vue.jsの@clickイベントでサーバーサイドにPOSTして、正常に完了した場合に画面をロードせずに一部のDOMを更新して送信完了表示したい。 しかし、画面が送信前の画面に戻ってしまってDOM更新後の画面にならない!? サーバーサイドはステータス20…

Railsでミドルウェアの読み込み順序を変える方法

ミドルウェアって? OSとアプリケーションの間に入って動作するソフトウェアのこと。 現在のRailsアプリのミドルウェアの状態を知りたいときは? bundle exec rake middleware コマンドをアプリディレクトリで打てばOK (Rails4系も5系も同じ) $ bundle exec …

Railsコンソールでの変数代入時の豆知識

内容 Railsコンソールでデータをいじる時に、加工したい値を別の変数に移してデータを変更することがよくあると思います。 そんなとき、変数名 = モデル名.find("ID")ってやらなくても良いんだぜ!というのが今回の内容です。 通常通りだと以下のような感じ…

Docker環境のRailsアプリでbootstrapに関わるnode.jsのコンパイルに失敗する問題の解決法

前提 現在、 現場Rails のタスク管理アプリをDocker環境かつMongoDBに置き換えて作っている状況です!(現場Railsの Chapter3 の部分に該当) 本の中のChapter3のbootstrapを入れて動かす部分で動作確認をしていると Autoprefixer doesn’t support Node v4.8.2.…

Dockerでコンテナ内にbundle installされない問題の解決法

前提 こちらの記事はDockerに対して不慣れな人間が書いているので、そらそうやろ!という内容が含まれます。 それでも個人用メモとして放流します。 技術要素 Rails 5.2.2.1 Ruby 2.5.1 mongodb 4.0.6 Dockerを扱うディレクトリ構成 アプリディレクトリ/ Gem…

RSpecのshared_contextで共通処理を1ヶ所にまとめる

はじめに RSpecにはテストで毎回同じ処理を書かなくても良いように処理を共通化する shared_context という仕組みがあります。 自分は直近まで知らなかったので、個人的なメモとして投稿します。 注記 サンプルコードは適当に用意したコードなので実在のコー…

mongoidのfind_or_initialize_byメソッド

はじめに find_or_initialize_by メソッドを知らなかった自分用メモに投稿させて頂きます。 なお、mongoidのコンソールログは量が多いので割愛し、ActiveRecordの例の時だけコンソールの表示を記載してあります。 find_or_initialize_byとは? 存在したらそ…

fishシェルにテーマを適用してカッコ良くする方法

今回やりたいこと fishシェルにテーマを適用してカッコ良くしたい! 完成形 fish を入れる fishが入っていない場合は、まずfishを入れます! $ brew install fish パッケージ管理ツール fisher を入れる fishのパッケージ管理ツールも入れていきます! githu…

Dockerコマンドが実行出来ない時の解決法

エラー内容 ターミナルからdockerコマンドを実行してもエラーが出てしまう... Docker engineが動いてない? 解決法 GUIで Docker for Mac を開いて preference から Reset to factory defaults を押下します。 結果 無事にコマンドが実行出来るようになりま…

Vue.jsのライフサイクル関数 created: 内ではthis.関数名()にしないと関数呼ばれないから気をつけてね!

要旨 Vue.jsにはDOMのライフサイクルごとに行いたい処理を定義しておくことが出来ます。なお、ライフサイクル関数は、Railsで言う before_action などのコールバックメソッドみたいなものです。 想定ケース 1. 画面を描画した時点でRailsのAPIを叩く 2. 取得…

Railsで同一アクション内でHTTPメソッドの種類によって分岐をしたい場合の実装方法

今回のお悩み 同じURLでGETで呼ばれた時とPOSTで呼ばれた時で、同一アクション内で処理を分岐したい... 検証環境 Rails 4.2.9 (Rails5でも動くと思う) 答え requestオブジェクトのHTTP判定メソッドで分岐出来る! 実装例 routes.rb get '/register' => 'user…

tigを最低限のカスタマイズで便利にする

tigって? 雑に言うとローカルでGitを良い感じに使うためのCUIクライアント?です! tigの入れ方 Macの場合はbrewでインストールすればOK! $ brew install tig 使い方 ローカルのGit管理下のフォルダ配下で tig とコマンドを打つだけ!(操作はVimで行う) Vim…

Railsアプリのrequest内容の確認で使えるメソッドについて

概要 Railsのコントローラー側でリクエストのあったドメインに関する判定を実装する度にrequest関連メソッドをググってるので、いい加減覚えようと... 確認Railsバージョン Rails 4.2.9 (これらメソッドはRails5系でも変わってない認識) 前提 hoge.test.dev:…

RailsアプリでUserAgentがbotかどうかを判定するのに便利なgem 'browser'

概要 アクセスがbotかどうかを判定する便利なgemがあったのでメモ! 他にも個別のブラウザを分析出来るみたいです!! 検証環境 - Rails 5.2.2 - gem 'browser' : バージョン:2.5.3 実装方法 コントローラーでリクエスト情報からBrowser.newして判定するだ…

YAMLのエイリアスとアンカーで設定ファイルをDRYに書ける

はじめに 現場Railsのp75にYAMLの基本についてまとめている箇所があり、そこで学びがあったのでそのメモとして投稿します。 YAMLのエイリアスとアンカー YAMLファイルの中で複数の箇所で共通化したいキーは「エイリアス」と「アンカー」を使って共有化するこ…

Railsアプリでwebpackerを使う場合はbin/webpack-dev-serverコマンド実行しておかないと生産性落ちるぞ!

概要 webpacker使ってると毎回Vue.jsを使っている画面に遷移するたびに [Webpacker] Compiling… というようなメッセージがコンソールに出て読み込みが遅いから何とかならんかな...って思っていました。 しかし!あるコマンドを実行することでホットリロード…

Railsアプリでmongoidを使った場合の特定フィールドに対するユニークバリデーションの実装方法

概要 RailsでMongoDB用のORMとして mongoid というgemがあります。 ここではそれを使った場合のモデルのバリデーションについてまとめてみます。 注意 RDBで言うカラムのことをMongoDBではフィールドと呼びます。 後述するフィールドは頭の中でカラムと変換…

JavaScriptで文字列の掛け算を実装したい場合の注意点

概要 Rubyでは文字列を数字で掛けると欲しい文字数のオブジェクトを簡単に作ることが出来ます。しかし、JavaScriptだとカジュアルに同じことが出来ないので、色々調べてみた結果をここにまとめてみます。 Rubyの例 '*' * 3 => '***' JavaScriptの例 '*'.repe…

Railsのログフィルター(filter_parameter_logging.rb)の活用法

filter_parameter_logging.rbって? config/initializers 配下にあるRailsがデフォルトで提供している本番ログにセキュアな情報(パスワード等)が流れないようにする仕組みです。(Rails4系からあるのかな?) 実際の活用方法について 業務で使っていると仕様変…

CircleCIこと始めYAMLファイルの基本から

はじめに CircleCIの設定はすべて .circleci/config.yml のYAMLファイルに記述されます。 CircleCIの使う上ではYAMLファイルの記載方法について理解することが重要です。 わたし自身、だいぶ理解があやふやなので、自分のメモとしてもYAMLの基本とあまり触れ…

RSpecの実行オプションまとめ

経緯 RSpecにはコマンド実行時に付けることが出来る便利なオプションがあり、復習がてらいくつかをまとめようと思った次第です。 -f documentationオプション -f documentation をつけることでコンソールへの出力形式がテストファイルの context と it など…

AWSのCloudWatch Logs Insightsが便利そうだった

AWS

経緯 自社アプリの運用でログの調査をする際に特定の時刻と条件に当てはまる任意の件数のログが見たい... そうなった時に会社の先輩に 「 インサイト 便利だよ」と教えてもらったことが本稿のきっかけです。 ざっくり概要 こちらの記事にインサイトの機能詳…

RSpec : 時刻のテストではtravel_toしたら必ずtravel_backしてね

追記:2019.09.23 こちらの記事で記載があるようにRails 5.2系からtravel_backを明示的に書かなくてもよくなった模様... shinkufencer.hateblo.jp y-yagi.hatenablog.com 経緯:自分が出したプルリクだけ関係ないRSpecで落ちる ここ数日、自分が修正したプル…

よちよち.rb 第143回 〜 jnchito さんと!Ruby・Rails での『困った』を解消しよう会〜 に参加した

よちよち.rb with 伊藤淳一さんに参加 掲題のイベントに参加して来ました。 yochiyochirb.doorkeeper.jp 内容としては、事前に集められた質問を元に伊藤淳一さんが一問一答していくといった感じでした。話す内容によってオフレコのものもありましたので、こ…

ローカル環境でRailsアプリのサーバーを別プロセスで2つ起動する方法

概要 つい先日、仕事でとある機能の修正をした後の動作確認で、クロスドメイン(サブドメインと独自ドメイン)間でブラウザ上のローカルストレージに保持される値が共有されるかをテストしなければならない機会があり、その際にやったことの自分用メモです。 …

RSpecの実行結果をドキュメント形式で

RSpecの実行結果を分かり易く表示したい CI上でランダムに失敗するRSpecをローカルで調査する際はどのテストがどの順番で実行されてエラーになるのか調査する必要があります。そういった場合にRSpecの実行コマンドにオプションをつけることでコンソールから…

CircleCIでランダムに落ちるテストを調査する方法:seed番号を指定してRspecを動かす

CircleCIでよく分からないところでテストが落ちる ローカルでは落ちないテストがCIだと落ちる... そんな時、原因はパッと思いつく限りでもいくつかあるだろうと思います。 原因と思われるもの 実行順序に依存しているテストがある 時刻系の処理で書き方の不…