dockerでmysqlのダンプファイルをリストアする

f:id:ihatov08:20170208215245j:plain

いつもやり方を忘れてそのたびにググっているので自分用のメモです。 Railsでdocker-composeでdbにdumpをリストアする方法です。

前提

  • Rails.root/tmp以下にdevelopment.dump.sqlがあること
  • docker-compose.ymlのservicesのdbが定義されていること
  • rails db:createしていること

コンテナにdumpファイルをコピーする

docker-compose up

してdbコンテナを起動します。

docker ps | grep hoge_db_1 | awk -F' ' '{print $1}'でdbコンテナのコンテナIDを取得できます。

hoge_db_1の部分は各自読み替えてください。

docker psでコンテナ一覧を表示、dbコンテナのIDをコピペでもできます。

tmp/development.dump.sqlをコンテナの/tmpにコピーします。

docker cp tmp/development.dump.sql `docker ps | grep hoge_db_1 | awk -F' ' '{print $1}'`:/tmp

dbコンテナのbashを起動する

docker exec -it `docker ps | grep hoge_db_1 | awk -F' ' '{print $1}'` /bin/bash

restoreする

dbコンテナのbashが起動したらリストアします。

mysql -u root -ppassword -D hrchecker_development < tmp/development.dump.sql

Railsがvalidationエラー時に自動挿入するfield_with_errorsとbootstrap4を共存させる

RailsではValidationエラーが発生した場合、validationエラーが発生したカラムのlabelとinput要素にfield_with_errorsクラスを付与したdiv要素で囲んでくれる仕組みがあります。 これはこれで非常に便利なのですが、bootstrapを使用している場合表示くずれが起こってしまいます。 ↓の画像をご覧ください。

f:id:ihatov08:20191126003023p:plain

labelは細字かつ少し小さく、input要素は高さが低くなっています。

この表示崩れを修正しましょう。 bootstrap4です。 表示崩れを直しつつ、赤枠で囲んでvalidationエラーをわかりやすくします。

.field_with_errors {
  input {
    @extend .is-invalid;
  }
}

.form-group {
  .field_with_errors {
    label {
      font-size: 20px;
      font-weight: 500;
    }
    
    input {
      height: 50px;
    }
  }
}

その結果がこちらです↓

f:id:ihatov08:20191126003026p:plain

表示崩れが修正されました。

お困りの方の参考になれば幸いです

rubyでhtmlのインデントを4から2に一括変更する

f:id:ihatov08:20160904203038j:plain

rubyでhtmlのインデントを4から2に一括変更する方法です。

使用するgemは↓です。

github.com

使い方はいたって簡単でインストールしてから

gem install htmlbeautifier

↓コマンドを打つだけです。

htmlbeautifier file名

ディレクトリのhtmlファイルを一括変更するスクリプトは

formatter.sh

#!/bin/bash
for file in `\find . -maxdepth 1 -name '*.html'`; do
  echo $file
  htmlbeautifier $file
done
chmod +x formatter.sh

./formatter.sh

です。

html/cssコーディングを外注したのですが、納品後にインデントが4になっていることに気がついたので 自分で2に変更しました。 発注時に気をつけていればよかった。。 このgemのおかげで2分くらいで作業完了しました!

htmlのインデントやフォーマットをプログラムで一括で揃えたい方はこのgemが便利です!

初心者からのプログラミング学習の始め方

完全初心者からのプログラミング学習の始め方

プログラミング学習を始めようと考えている方へ。

PCがちょっと触れるくらいからリモートワークで働くエンジニアになった私の経験から、 完全初心者から効率的にプログラミングを学ぶ方法を自身の経験も踏まえて答えたいと思います。

この記事で目指すところ 外資系製薬会社営業->公務員やりながらプログラミング学習->エンジニアに転職->リモートワークエンジニア ↑のようなキャリアを歩んでます。 完全初心者からリモートワークWebエンジニアとして生活できるようになりました。 プログラミング未経験、完全初心者からWebエンジニアになる方法を紹介したいと思います。

まずはパソコンを準備する

初心者の方からよくある質問で「プログラミングをやるにはパソコンは何がいいですか?」と聞かれることがよくあります。

結論 : 貯金があるならMacbookPro13インチ,なければMacbookAir13インチ

パソコンは性能が良い≒高いほうがよいのですが、初心者でプログラミングを学習をするのが目的なら Macの中でもMacbookPro13インチをおすすめします。

以下のスペックをおすすめします。 画像で言う真ん中ですね。 - CPU : Corei5 - メモリ: 8GB - ストレージ : 256GB

お金に余裕があればCPUをCorei7にアップグレード、メモリを16GBにするのもありです。 Corei7にアップグレードは+¥33,000するのですが、その分処理時間が速くなるので時間が節約できると思えば 先行投資としては安いものです。

一番注意してほしいのはストレージです。 私がプログラミング学習のために初めてMacbookProを購入したときケチって128GBにしたのですが、 1年くらいすると容量が足りなくなってしまいました。 ストレージは後から追加できないに等しいので、256GBを選択しましょう。

なぜMacbookなのか?

プログラミング学習ではトライ&エラーの繰り返しです。 そのときにwebで検索することになるのですが、そのときにヒットする検索結果のほとんどがMacbookが 前提となっています。 Macbookを使っているプログラマが多いということですね。

プログラミングスクールに通う際もMacbook指定であることも多いです。

独学でやる場合も書籍や動画サイトもMacbookが前提であることが多いです。

WindowsやLinuxでもプログラミング学習は可能ですが、完全初心者から始める場合はMacを選びましょう。

オンラインプログラミング学習サービスを利用する

prog-8.com

学習の開始にはオンラインプログラミング学習サービスを利用するのがおすすめです。

理由は「すぐ」に学習が開始できるからです。

プログラミングの学習は自分のパソコンで開始する場合、「環境構築」と呼ばれるプログラムが動作する状態を作る必要があります。

この環境構築が非常に大変で、学習を開始する前に挫折してしまう人もいるくらいです。

その環境構築なしにプログラミングを開始できるオンラインのサービスを利用するのがおすすめです。

Progateが一番のおすすめですね。

プログラミングスクールに通う

Progateで「プログラミングはどんなものか」がつかめると思いますので、次はスクールに通いましょう。

スクールに通ったほうがよい理由は、プログラミングはエラー画面との戦いだからです!

初心者の場合、たくさんのエラーが出てひとりだと1つのエラーの解決に数時間、数日かかることもあります。

1つのエラーの解決に数日もかかっていたら挫折してしまいますよね。

経験豊富なスクールの講師の方がいれば、ひとりだと数時間、数日かかってしまうエラーがものの数分で解決できます。

プログラミングスクールはひと月数万円、数カ月で数十万の費用がかかりますが、エンジニアになるのであれば

プログラミングスクールに通ったほうが近道になります。

本で補う

Progateやプログラミングスクールに通っている間は通い終わった後は、市販の本で足りない知識を補充しましょう。

どの言語をやったかにもよりますが、Rubyの場合は以下の本で学習するのがおすすめです。

改訂4版 基礎 Ruby on Rails (IMPRESS KISO SERIES)

改訂4版 基礎 Ruby on Rails (IMPRESS KISO SERIES)

  • 作者: 黒田努,佐藤和人,株式会社オイアクス
  • 出版社/メーカー: インプレス
  • 発売日: 2018/09/07
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

実践Ruby on Rails 4 現場のプロから学ぶ本格Webプログラミング

実践Ruby on Rails 4 現場のプロから学ぶ本格Webプログラミング

私はプログラミングスクールに通った後に↑の本で学習しました。

スクールで習ったことの復習になるのでおすすめです。

まとめ

「初心者からプログラミング学習の始め方」について紹介しました。

  • まずはパソコンを準備する Macがおすすめ
  • オンラインプログラミング学習サービスを利用する Progateがおすすめ
  • プログラミングスクールに通う
  • 本で補う

紹介した方法で完全初心者からプログラミングを学習してみてください!

Deviseで別のユーザーでログインする機能を実装する

f:id:ihatov08:20171003121303j:plain

最近、初の個人開発のWebサービスをリリースしました。

実際のユーザーからどう見えているのか、改修をしたけど果たしてちゃんとログインできるのか?

確認のため、別のユーザーでログインする機能を実装してみました。

認証のライブラリはdeviseです。

実装にあたってdevise_masquerade Gemの利用を検討しました。

github.com

devise同様、Rails engineで構築されているのですが、どのモデルにも対応するように、汎用的に作られている反面、

カスタマイズする場合コードを読まないといけないことと、汎用性は必要なかったので、実装してみました。

Routing

  namespace :users do
    post "masquerades/:user_id" => "masquerades#create", as: :masquerades
  end

Controller

class Users::MasqueradesController < ApplicationController
  # admin_userでログインしている場合のみ使用可能にする
  before_action :authenticate_admin_user!

  def create
    user = User.find(params[:user_id])
    # deviseのsign_inメソッドでサインインする
    sign_in(user)
    # リダイレクト先の指定
    redirect_to dashboards_path
  end
end

View

link_to "ユーザーでログイン", users_masquerades_path(resource), method: :post

Gemよりもクリーンなコード

ライブラリを使うとREADMEの通りにすれば実装できる反面、カスタマイズするためにコードを読まないといけなかったりするので、 ライブラリのコードをさらっと見てみて参考にしながら自分で実装してみるのもよいと思います。

Gemの作りは今回の仕様にはオーバースペックだったため、採用を見送りました。

Deviseで別のユーザーでログインする場合の参考にしてください。