Docker+Rails環境下でのユーザー削除の実装(退会機能の実装)

サンプルデータ生成タスクにadminユーザーを1人追加します。

db/seeds.rb

User.create!([{ name: "suzutuki",
  email: "example@railstutorial.org",
  password: "suzu",
  password_confirmation: "suzu",
  admin: true },
  { name: "suzu",
  email: "suzu1@railstutorial.org",
  password: "suzu",
  password_confirmation: "suzu"},
  { name: "suzu",
  email: "suzu2@railstutorial.org",
  password: "suzu",
  password_confirmation: "suzu"},
  { name: "suzu",
  email: "suzue3@railstutorial.org",
  password: "suzu",
  password_confirmation: "suzu"}])

seedファイルを使う時にはデータベースをリセットします。

docker-compose run web bundle exec rails db:migrate:reset

データベース上にサンプルユーザーを生成します。

docker-compose run web bundle exec rails db:seed

users_contorollerに以下の記述を追加します。

before_action :admin_user, only: [:show]

 def destroy
  @user = User.find(params[:id])
  @user.destroy if correct_user || admin_user
 end
  
private
 def user_params
  params.require(:user).permit(:name, :email, :password,
                          :image, :password_confirmation)
  end

# 正しいユーザーかどうか確認する
  def correct_user
    @user = User.find(params[:id])
    redirect_to(root_url) unless current_user?(@user)
  end

# 管理者かどうか確認する
  def admin_user
    redirect_to(root_url) unless current_user.admin?
  end

任意のユーザーが自分自身にアプリケーションの管理者権限を与えることを防止できます。

続きを読む

debugのやり方(Better Errors)

自分用にエラーが出たときの対応の仕方をメモしておく。

1:エラーをGemで見やすくする

Better_errorsの使い方(Docker)からBetter Errorsを導入

2:どこでエラーが起きたか調べる

エラーログの左側を見てどこでエラーが起きたか調べてみる

Application Frames: 自分が書いたコード

All Frames:                   ライブラリなど全部あわせたもの

またはdocker-compose up などでエラーログを見る

続きを読む

画像投稿機能の実装(Docker+rails+carrierwave+fog-aws+rmagick)

目標:ユーザーのプロフィールに画像をアップロードして設定できるようにしたい

以下のGemをGemfileに記述します。

コンテナを再起動する

docker-compose stop

docker-compose down

docker-compose build
#アップローダーを生成する
docker-compose exec web rails g uploader Image

userモデルに画像をアップロードするためにimageカラムを追加します。

docker-compose run web bundle exec rails g migration AddImageToUsers user image:string

マイグレートします

続きを読む

Ruby Mine(JetBrainsToolboxを使ってインストール)

JetBrainsToolboxとは?

JetBrainsツールを簡単に管理できるもの

  • インストール
  • 自動更新
  • IDEとプラグインを一緒に更新
  • ロールバックとダウングレード

パッケージ全体をダウンロードする代わりにパッチやパッチ一式をダウンロードし、IDEのメンテナンスにかかる時間と労力を節約することができる。 すべてがバックグラウンドで更新されるため、コーディングを一切中断する必要はありません。

Toolbox アプリをインストールする(Mac)

  1. JetBrainsの公式からダウンロードをクリック

  2. 「保存」をクリックしてダウンロード 続きを読む

RailsでSass変数で色の管理をする方法

動機

Sassで変数を定義する練習のため。

使い方

  1. app/assets/stylesheets/variables.scssを作成する。
$color-nobleblack:   #1d1d1f;
$color-white:        #fff;
$color-coffee_brown: #614226;
$color-thin_grey: rgba(250, 240, 230, 0.1);

2.変数を使うscssファイルで@import “color”;を記述

app/assets/stylesheets/base.scss

@import "variables";
//全体の設定
html {
  position: relative;
  min-height: 100%;
}

/* bodyからの設定 */
body {
  margin-bottom: 60px;
  border-top: 6px solid $color-coffee_brown;
  font-family: "SF Pro JP","SF Pro Text","SF Pro Icons","Hiragino Kaku Gothic Pro","ヒラギノ角ゴ Pro W3","メイリオ","Meiryo","MS Pゴシック","Helvetica Neue","Helvetica","Arial",sans-serif;
  line-height: 1.47059;
  background-color: $color-white;
  letter-spacing: -.022em;
  color: $color-nobleblack;
  overflow-x: hidden;
  font-style: normal;
}

変数の部分を変更するとインポートしている部分がすべて変わるので、便利な半面、気をつけて利用しよう!

Ruby mine2.5(他のプラグインの導入)

前回の復習(プラグインの導入準備)

RubyMine-EAPのウィンドウをクリックしてアクティブ状態にして、画面上部にマウスを移動し、メニューバーを表示してRubyMine-EAPタブのPreferences…をクリックで環境設定をする。

1:またはショートカットキーの「⌘,」で環境設定をする。

2:左のサイドバーのプラグインをクリック

3:上部中央にあるマーケットプレイスをクリックして準備完了 続きを読む

Rubymine(Docker環境でのデバッグ)

参考にした記事

システム環境設定→セキュリティーとプライバシー→デベロッパツールから[+]を押し、プログラムの登録ダイアログを表示する。
スクリーンショット 2019-12-24 2.18.16.png

画面右上の検索窓からを選択(複数ある場合は一番新しくてファイルサイズの大きいもの)を指定します。JetBrains Toolboxを起動中の場合、JetBrains Toolboxを終了させる通知が表示されるので従う。

バージョン管理から取得を選択

任意のものをgithubからクローン

ダウンロードが完了すると、RubyMineが自動的にローカルのRakeを呼ぼうとしてエラーになるが無視する。

Gemfileに’debase’と’ruby-debug-ide’を追加

database.ymlの設定(MySQLの場合)database:の部分は任意で

default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: password
  socket: /tmp/mysql.sock
  host: db

development:
  <<: *default
  database: lifehack_development

続きを読む

Ruby Mine2(プラグインの導入)

プラグインの導入

1:FinderでアプリケーションにあるRubyMine 2020.2 EAP.appをダブルクリックして「開く」をクリックして起動する。

2:新規プロジェクトの作成をクリック

3:適当なディレクトリを指定して右下の「作成」をクリック

4:RubyMine-EAPのウィンドウをクリックしてアクティブ状態にして、画面上部にマウスを移動しメニューバーを表示してRubyMine-EAPタブのPreferences…をクリックで環境設定をする。

またはショートカットキーの「⌘,」で環境設定をする。

5:左のサイドバーのプラグインをクリック

6:上部中央にあるマーケットプレイスをクリック

プラグインの導入(例としてHighlightBracketPairをインストール)

HighlightBracketPairとは?

カーソルがある箇所を囲んでいるカッコ()をハイライト表示して

ソースコードを読みやすくできるプラグイン

 

1:マーケットプレイスの下部にある検索窓にHighlightBracketPairで検索して

インストールをクリックしRestart IDEをクリックして再起動

プラグイン導入前↓(user_params)に注目

 

 

 

 

 

 

 

プラグイン導入後↓(user_params)に注目

使い方:プラグインを有効にしている限り有効

その他のプラグインに関しては先程のように検索窓で検索して追加していく。

オススメのプラグインはこちら↓で紹介されているのでチェック!

RubyMineをさらに便利にするプラグインたち:前編

 

Ruby Mine1.5(Ruby MineEAPのインストールと日本語化)

RubyMine-EAP(早期アクセスプログラム)とは?

Jetbrains公式より引用

早期アクセスプログラム(EAP)では、プレスリリースビルドの製品を無料でご利用いただけます。 新しい機能をお試しいただき、貴重なご意見をお寄せください。

1ヶ月の無料期間が終わってまだ購入を検討している方などにオススメ

ただし日本語化をする場合、注意しないと起動しなくなるので注意!

起動しなくなった場合QiitaのRubyMine-EAP を日本語化を参照

Ruby MineEAPをダウンロード

1:Ruby Mine公式から左下の「Download」をクリック

2:「保存」をクリックしてダウンロード。

続きを読む