Docker」カテゴリーアーカイブ

Docker環境下のpry-byebugの使い方(デバッグ)

Gemfileに以下を記述します。

group :development do
  gem 'pry-byebug' ←追加
end

docker-compose buildでコンテナを作る。

docker-compose build

docker-compose up -dでコンテナを起動する

docker-compose up -d

docker psでNAMESを確認

docker ps

docker attach lifehack_web_1

newメソッドにbinding.pryを追加

class TasksController < ApplicationController
  def new
    @task = Task.new
    binding.pry
  end
end

http://localhost:3000/tasks/newを開くかリロードして

ターミナルが↑のような表示になったらOK

@taskにいろいろ値を入れてみる

@task.title = 'task1'

@task.content = 'content'

@task.priority = 3

exitでデバッガーから抜けると

先程入力したオブジェクトがフォームにセットされた!

使い終わったらbinding.pryを消して

コントロールキー^を押しながらp,qキーの順に押すとアタッチが解除できる!

Docker環境でrails cするには?

Docker環境でrails cするには?

1:まずdocker-compose ps で確認する

docker-compose ps

赤枠の部分が重要

コンテナに接続する

#赤枠の部分(各々違うので注意)を↓に
docker exec -it lifehack_web_1 bash
bundle exec rails c

irb(main):001:0>というふうに表示されたらOKです。

もとに戻りたい時(コンテナの接続を外す)

exit

exit

でもとに戻ることができます。

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

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

続きを読む

画像投稿機能の実装(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

マイグレートします

続きを読む