Just do IT

思うは招く

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

RailsのsubmitボタンにBootstrapのbuttonを適用させる方法

やりたいこと Railsアプリのフォームヘルパー内で、submitボタンにBootstrapのbuttonデザインを適用させたい。 ~ = f.submit # これにBootstrapのボタンクラスをつけたい。 解決 CSSぽくクラスをあてるだけ。 = f.submit nil, class: 'btn btn-primary' これ…

ActiveStorageを使って画像アップロード機能を実装してみる

やりたいこと ActiveStorageを使い、Railsアプリに画像をアップロードする機能をつけたい(development環境)。 環境 Rails 6.0.2.1 ruby 2.6.5 MacOS/Homebrew 試作アプリをつくる active_storageというRailsアプリを作る。 続いて、簡単なブログ機能を作成…

gitのcommitメッセージを間違えたときに修正する方法

Git

「やべ、コミットメッセージをタイポしちゃった」てなとき。 --amendオプションを使う。 $ git commit --amend -m "修正したメッセージを入れる" するとこれで最新のコミットのメッセージが修正できる。 コピペ用に。 git commit --amend -m "" Gitでcommit…

slimでテキストとインスタンス変数を横並びで表示したい

やりたいこと Rails をはじめよう - Railsガイドでブログにコメントをつける機能の実装をしていたときのこと。 これを こうしたい。 つまり、pタグ内に=で始まる変数を入れたい。 なおerbではなくslimを使っている(タイトルが適切に表現しているかはわから…

omniauthを使ってRailsアプリにFacebook認証を実装する

前回の記事の続き。 k-koh.hatenablog.com やりたいこと 環境 Facebookアプリの用意 Rails側の実装 必要なgemをインストール .envファイルを作成 devise.rbに追記 Userモデルにカラムを追加 コントローラーを作成 SNS認証をしたときのコールバック処理を定義…

Rails カラムを削除するマイグレーションファイルの作り方

例:BooksテーブルからAuthorカラム(string)を削除する場合。 bin/rails g migration RemoveAuthorFromBooks author:string changeメソッドではなく、up、downメソッドを使って書く。 class RemoveAuthorFromBooks < ActiveRecord::Migration def up remov…

VSCodeでファイルを検索するショートカット

ファイル名で検索する command + p これでファイルを検索し、お目当てのファイルがあれば表示できる。 たとえば、railsでroutes.rbを表示したいとき。いちいち左のカラムから探すのは面倒。 command + pを押すと もはや「最近開いたファイル」で選べる!便利…

deviseを使ってRailsアプリに簡単なログイン認証を実装してみる

やること 開発環境 deviseを使う準備 viewファイルの作成 Userモデルを作成する テーブルに保存される内容をチェック マイグレーションを実行 現時点でのルーティングを確認 一旦コミットする コントローラーを作成 app/views/home/index.html.erbに追記 app…

Markdown記法で画像サイズを変更する方法(widthを指定する)

やりたいこと Markdown記法で貼った画像が大きすぎるので小さくしたい Qiitaに投稿した画像が意外と大きかったのでwidthを指定したい 方法 元のMarkdown記法 ![画像.jpg](***.jpg) 次のように変更する。 <img src="***.jpg" width="300"> widthを%で指定することもできる。 <img src="***.jpg" width="50%"> 例 たとえば、こ…

Rails 6.0.2.1 でカスタマイズjsファイルはどこに配置すればいいのか

イシュー app/javascript/tasks.jsに書いた、オリジナルのjsファイルを読み込みたい。 バージョン:Rails 6.0.2.1 解決 app/javascript/packs/application.jsにrequire("tasks")を追加する。 require("@rails/ujs").start() require("turbolinks").start() r…

mailcatcher を実行して command not found エラーが出るときの対処

問題 「現場で使えるRuby on Rails5 速習実践ガイド 5.2対応」で勉強していたときのこと。 メールが送られているか確認するため、mailcatcherというメールテストのgemをインストールした。 しかし、mailcatcherコマンドを実行しても起動しない。 $ mailcatch…

まだgit addしてない状態で変更を取り消して、最新のコミット状態に戻したい

Git

やりたいこと 今作業している変更を取り消して、最新のコミット状態に戻したい 「うわ、この変更まずいかも?前のに戻したいなぁ…」 「ちょっと試した変更、微妙だったわ。戻そ」 「やば、間違えてこのディレクトリ消しちゃった!」 みたいなとき、どんなgit…

railsコンソールでデータベースに変更を加えないsandboxモード

rails cをsandboxモードで実行すると、データベースに変更が加わらない。 rails c -s or rails c --sandbox sandboxモードはそれ自体がひとつのトランザクションになり、終了時は自動でロールバックされる。

RSpecを実行してもテスト名が表示されない

問題 RSpecを実行してもテスト名が表示されない。 $ bundle exec rspec spec/system/tasks_spec.rb Capybara starting Puma... * Version 4.3.1 , codename: Mysterious Traveller * Min threads: 0, max threads: 4 * Listening on tcp://127.0.0.1:52270 .…

Rubocopに自動で修正してもらうコマンドオプションは --auto-correct

rubocop --auto-correct bundle execをつけるなら bundle exec rubocop --auto-correct -aに省略もできる。 bundle exec rubocop -a

GitHubでprivateリポジトリにコラボレーターを招待したい

やりたいこと 自分が作ったGitHubのprivateリポジトリにコラボレーターを招待したい 流れ 該当リポジトリの「settings」へ 左にあるカラムの「manage access」へ 「Inviate a collaborator」をクリック コラボレーターに招待したい人のGitHubユーザーネーム…

code コマンドでディレクトリをVSCode上で開くとENOENTエラーが出る

問題 code . 該当ディレクトリへ移動し、ディレクトリをVScodeで開こうと上記コマンドを実行すると、以下のエラーが出る。 Error: ENOENT: no such file or directory ~ Library/Application Support/Code/clp/~/corrupted.info 調べると、「Error NO ENTry…

VSCode でファイルのタイトルにパスを表示したい

VScodeを開き、コマンド + ,で設定を開く。 ウィンドウに以下を入力。 window.title 設定が出てくるので、これを好きにカスタマイズすればOK。 デフォルトだと次のように設定されている。 ${activeFolderShort}${separator}${rootName} それぞれの設定につい…

Rails マイグレーション後、既存のテーブルカラム属性をインデックスにする方法

すでにマイグレーションをして、あとから特定のカラム属性にインデックスをつけたい場合 まずマイグレーションファイルを作成する。 例えば、Usersテーブルのemail属性にindexをつけたいとする。 rails g migration add_index_email_to_users 生成されたマイ…

Rails で画像パスを指定するときのルール

Railsでは、画像のパスを指定する方法によって、参照するディレクトリが変わる。 相対パスで指定する場合はapp/assets/images/を参照する <%= image_tag 'test.jpg' %> このように指定すると、Railsはapp/assets/images/test.jpgにあるものとして参照する。 …

Vagrant + Rails 6.0.2.1 のdevelopmentでコード変更が反映されない現象を解決

環境 Vagrant 2.2.2 NAME="Ubuntu" VERSION="18.04.3 LTS (Bionic Beaver)" rbenv 1.1.2 ruby 2.7.0 問題 MacOS環境だと問題ないのだが、vagrant環境でRailsサーバーを起動中、コードを変更しても反映されない。 コントローラー、モデル、ビュー、ルートなど…

「人にやさしく」の歌詞を自分なりに解釈してみる

みんなのヒーロー、ブルーハーツの「人にやさしく」の歌詞についての自分なりの解釈。 ふと思ったのでメモしておく。 この歌は、「人にやさしくする」ということはどういうことか、を考えさせてくれる。 また、甲本ヒロトにとっての「やさしさ」の定義を垣間…

Railsで独自アクションを特定のリソースフルルート内に追加する方法

idを持っていないルートの場合 まだidを持っていない、新規のリソースに対するルート(コレクションルート)を設定するとき。 resources :books do collection do get 'search' end end 結果 booksのリソースフルルート(一般的な7つのルート)に加えて、1番…

Rails コールバックとフィルターの違いをイラストにしてみた

結論 コールバック:データベースへデータを登録する処理の前後に実行される モデルを使ってテーブル更新するときらへんの処理 before_validationやafter_validationなど フィルター:モデルの処理も含むアクションの前後に呼び出す コントローラーのアクシ…

Rails でダイジェスト認証を実装する方法

app/controllers/application_controller.rbに以下を記述。 class ApplicationController < ActionController::Base USERS = { "admin" => "admin" } before_action :authenticate private def authenticate authenticate_or_request_with_http_digest do |u…

Railsでコントローラーは変えずにURIの表示を変える方法

たとえば、/entriesというURIではなくrentalsにしたい場合。 Rails.application.routes.draw do resources :entries, only: [:new, :create, :destroy, :index], path: :rentals end path: :rentalsをつけて、パスだけを変えている。 これでrails routesでル…

Ruby 2.7.0 + Rails 6.0.2.1 で警告 warning: Using the last argument as keyword parameters is deprecated を一旦回避

結論 Ruby 2.7.0 にgemのアップデートがまだ追いついてないっぽい 一時的に警告が出ない設定にする ただし、バージョンアップで改善された場合は設定を取り消すべし 環境 ruby 2.7.0 Vagrant Ubuntu Rails 6.0.2.1 rbenv 1.1.2 OSはUbuntuだが、MacOSでも共…

git でタブ補完する設定方法

Git

MacOSでもLinuxでも共通する方法。 設定に必要なファイルをまずダウンロードする。 curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash もしかしたらLinuxだとcurlコマンドが入って…

Railsのコンソールでデータベース構造(スキーマ)をサッと確認したい

やりたいこと rails cでRailsのコンソールに入り、データベースの構造(スキーマ)をサッと確認したい カラム名を知りたい 方法 rails c モデル名.column_names たとえばUserモデルなら [1] pry(main)> User.column_names => ["id", "name", "email", "passw…

Rails で Migrations are pending エラーが出たらdb:migrateする

問題 Railsで開発中、rails sでサーバーを起動するとたまに次のエラーが出る。 ActiveRecord::PendingMigrationError Migrations are pending. To resolve this issue, run: rails db:migrate RAILS_ENV=development ActiveRecord::PendingMigrationError 解…