Just do IT

思うは招く

2020-09-01から1ヶ月間の記事一覧

Rails で sprockets ではなく webpacker で scss を管理したい

手順 app/assets/stylesheets/をapp/javascript/配下に移動する。 $ mv app/assets/stylesheets/ app/javascript/ app/javascript/stylesheetsになっていればOK。 とりあえず今回は app/javascript/stylesheets/application.scss にそのままスタイルを書いて…

Rails で link_to に target blank 属性をつけて別タブで開くようにする方法

リンクにtarget: "_blank"を付与する。 #slimの場合 = link_to "Kota Kanazawa", "https://twitter.com/KanazawaKoh", target: "_blank" これで別タブで開かれる。

Rails で URL や email のバリデーションを実装したい

#url validates :url, format: /\A#{URI::regexp(%w(http https))}\z/ #email validates :email, format: { with: /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i } email は 、devise やその他の認証系 gem を使っていたらすでにバリデーションが実装されている場合…

Devise でログインをスキップする方法

スキップさせたいコントローラーで以下を記述。 skip_before_action :authenticate_user!

Live Sass Compiler を VSCode に入れたら「拡張機能のホストが予期せず終了しました」エラー

問題 VSCodeで「拡張機能のホストが予期せず終了しました。」と出て、タブが効かない。 解決 「Live Sass Compiler」をアンインストールし、再起動したら直った。 用途としては、ただSaasを練習したいだけだったため、webpackにSassを扱うプラグインを入れて…

SCSS設計 関連ファイル作成コマンド【Rails】

FLOCSS設計 FLOCSS設計を採用した場合。 構成 ├──foundation/ ├──layout/ └──object/ ├──component/ ├──project/ └──utility/ 作成コマンド。 #ディレクトリ作成 mkdir app/assets/stylesheets/foundation mkdir app/assets/stylesheets/layout mkdir -p app…

Rails で rake タスクを作成・実行する

Railsでrakeタスクを作り、実行する手順 まず、適当なRailsアプリを作る。そしてコマンドラインで以下を実行する。 #適当なタスクを生成する $ rails g task task_sample 生成されたファイルを見るとネームスペースができており、この中にタスクを実装する。…

webmock で一度に複数回のAPIリクエストをするフリをしたい

やりたいこと webmock を使っていて、一度の処理で複数回のAPI通信をするフリをしたい リクエストURIのパラメーターがコードの中で変わるが、返ってくる複数のAPIレスポンスはまとめて処理したい 方法 この方法が最適なのかはわからないが、スタブ登録したも…

RSpec を学ぶのにオススメの記事たち

RSpec を学ぶにあたって、とてもためになった記事を自分用にメモしておく。RSpecの使い方を手っ取り早く、正確に知るには以下の記事シリーズがすばらしい。 使えるRSpec入門・その1「RSpecの基本的な構文や便利な機能を理解する」 - Qiita 使えるRSpec入門・…

Ruby で2次元配列を1次配列に変換するメソッド flatten が便利

ある API へアクセスして、特定の値だけを配列に入れていきたかった時、配列がどんどんネストしてしまっていた。 だが、flattenメソッドを使えば文字通り配列を平らにできる。 Array#flatten (Ruby 2.7.0 リファレンスマニュアル) ary = %w[hoge bar] ary2 =…

Google::Apis::ClientError: forbidden: The provided API key has an IP address restriction 自然解決?

問題 ウェブフレームワークに Rails を採用し、Google Search JSON API を使って開発していたとき。 コード側はなにも変えておらず、突然以下のようなエラーが出た。 Failures: 1) Google #rankings_ary Failure/Error: @search_results = searcher.list_cse…

webmock でAPIキーをダミーにして外部API通信するフリをしたい(Rails)

やりたいこと webmock でAPIキーをダミーにして外部API通信するフリをしたい Custom Search JSON API を使った箇所をRailsでテストをしたい 手順 Custom Search JSON API | Programmable Search Engine を使って開発をしていたときのこと。 Google公式が用意…

Ruby dynamic constant assignment エラー

問題 Rubyを実行すると以下のエラーが出た。 dynamic constant assignment 解決 メソッド内で定数を定義しているのが原因だった。Ruby では、メソッド内で定数の定義ができない。 #これはできない def hoge API_KEY = '' end #メソッドの外で定義する API_KE…

Ruby で配列から条件に一致するインデックスを取得したい

やりたいこと ある配列に入った要素をひとつずつ確認して、引数に渡した要素と比較し、合致した場合のインデックスを取得したい。 方法 indexやfind_indexが使える。 指定された val と == で等しい最初の要素の位置を返します。等しい要素がひとつもなかっ…

Ruby + google-api-client で Custom Search JSON API を使う方法

やりたいこと Ruby 用の google-api-client gem を使い、検索エンジンで検索ワードを指定して検索結果(順位)を取得したい。 前提 $ ruby -v ruby 2.7.1 その他 Custom Search JSON API | Programmable Search Engine に登録している API_KEYを取得している…

Ruby で Google 検索順位を取得するときの選択肢

Ruby で Google 検索順位を取得するときの選択肢として、以下の2つがある。 Custom Search JSON API | Programmable Search Engine Google Search API - SerpApi Custom Search JSON API Custom Search JSON API | Programmable Search Engine Google の公式…

Capybara でリンクをクリックしたい

参考:使えるRSpec入門・その4「どんなブラウザ操作も自由自在!逆引きCapybara大辞典」 - Qiita click_link はa要素を指定する 見た目がボタンでもa要素ならリンク ボタンやリンクを考慮したくないなら、 click_on click_link "編集" click_on "編集"

git clone した Vue.js アプリを動かしたい

やりたいこと git cloneした Vue.js アプリを動かしたい。 $ git clone ~ cd そのディレクトリへ $ npm install #依存関係を解決する(エラーメッセージが出たらでOK) $ npm audit fix サーバー起動。 $ npm run serve ワッショイ💪

Rails でテーブルにインデックスを追加したい

たとえば、Bookモデルの created_at にインデックスを貼りたい場合。 $ bin/rails g migration add_index_to_books ※ファイル名は適当 マイグレーションファイル。 class AddIndexToBooks < ActiveRecord::Migration[6.0] def change add_index :books, :cre…

rbenv で rehash をする必要はない

rbenv で Ruby の管理をしている場合、バージョンを切り替えたり、gem をインストールした後はrbenv rehashをする必要があった。 しかし、2014年のアップデートにより、rbenv rehashをする必要はなくなった。 rbenvでrehashがいらなくなった Bring rbenv-gem…

Rails form_with にモデルオブジェクトを複数渡すときの書き方

ネストしたルートの場合、form_with には複数のモデルオブジェクトを渡すことがある。 = form_with model: [@article, @log], local: true do |f| = form_with(model: [@article, @log], local: true) do |f| ワッショイ💪

Rails 6 webpacker で JavaScript を扱う

最初に、yarn でライブラリをインストールする。 たとえば jquery を入れたい場合。 yarn add jquery config/webpack/environment.js の設定で、jquery の$マークを使えるようにする。 const { environment } = require('@rails/webpacker') const webpack =…

Rails ネストされたルートに対する form_with の書き方

やりたいこと 前提 結論 環境 前準備 ログを表示する ログ作成 ログを編集する ログを削除する ルーティングを整理 削除 フォームをパーシャル化 リポジトリ 感想 関連 やりたいこと 以下のように、ルートが親子関係を持つ場合のフォームの作り方を再現する…

rails db:rollback → マイグレーションファイル修正 → マイグレート再実行の流れ

ロールバック怖い。でもやらなければ・・・ ロールバックの手順をメモした。 背景 logsテーブルの id を uuid に変更したい でもすでに logs テーブルは作っちゃった 幸い、ひとつロールバックすればまだ戻せる DB は postgresql を使用 今の DB バージョン…

Rails + PostgreSQL で id を uuid に変更したい

モデル作成時に設定する手順 $ rails new uuid-test -d postgresql $ cd uuid-test データベース作成。 $ rails db:create モデル作成。 $ rails g model User name:string マイグレーションファイルを修正。 class CreateUsers < ActiveRecord::Migration[6…

rails new データベース PostgreSQL 指定

rails new <アプリ名> -d postgresql rails new後にDBを変えたい場合 Rails 6 で DB を SQLite3 から PostgreSQL に変更するのはコマンド一発 - Just do IT

Rails テーブルのカラムをユニークにしたいときのマイグレーション

モデルの属性を一意にしたい場合はuniqをつける。 rails g model User name:string email:string:uniq