- 投稿日:2019-05-29T22:53:44+09:00
Ruby/Ruby on rails/MysqlをDockerで環境構築
DockerでRuby/Ruby on rails/mysqlの環境構築からデプロイまでできたのでメモしておきます。
(1)Dockerfile作成
DockerfileFROM ruby:2.5.3 RUN apt-get update -qq && \ apt-get install -y build-essential \ libpq-dev \ nodejs RUN mkdir /app_name ENV APP_ROOT /app_name WORKDIR $APP_ROOT ADD ./Gemfile $APP_ROOT/Gemfile ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock RUN bundle install ADD . $APP_ROOT(2)docker-compose.yml作成
docker-compose.ymlversion: '3' services: db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: root ports: - "3306:3306" web: build: . command: bundle exec rails s -p 3000 -b '0.0.0.0' volumes: - .:/app_name ports: - "3000:3000" links: - db(3)Gemfile作成
Gemfilesource 'https://rubygems.org' gem 'rails', '5.2.2'Gemfile.lockも作成
$ touch Gemfile.lock(4)新しいアプリを作成
$ docker-compose run web rails new アプリ名 . --force --database=mysql --skip-bundledatabese.ymlを編集
database.ymldefault: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: password host: dbGemfileをbundle install
$ docker-compose run web bundle install(5)コンテナをビルドと起動
$ docker-compose build # コンテナをビルド $ docker-compose up # コンテナの一斉起動※bundle installの後にbuildする
(6)DB作成
$ docker-compose run web rails db:createDBを作らないとエラーが出る
DBを作成後localhost:3000で初期画面が表示される!
()Herokuでデプロイ
herokuの登録,heroku cliはインストール済みとする
Herokuにアプリ作成
$ heroku createデータベースをMySQLに変更
$ heroku addons:add cleardbClearDBアドオンとは,ClearDBというデータベースサービスが提供している,MySQLを使うためのもの。
$ heroku config | grep CLEARDB_DATABASE_URL
mysql:// 〜 reconnect=true
がデータベース情報
mysql
の部分をmysql2
に変更環境変数を変更
$ heroku config:set DATABASE_URL=mysql2:// 〜 reconnect=true //先ほどのデータベース情報全部$ git add . $ git commit -m "update for upload to heroku"アプリをデプロイ
$ git push heroku masterマイグレーションファイル作成
$ heroku run rake db:migrate参考
- 投稿日:2019-05-29T22:46:12+09:00
PhpStorm-DB接続(MySql)
右上にあるDatabaseをクリック
画像のようにMySqlをクリック
画像のように
・Name (なんでもいい)
・Host (僕の場合Docker使用のため)
・User (Mysqlにログインできるユーザー)
・Password (Mysqlにログインできるユーザーのパスワード)
DriverFileがなければ、画像のような表示が出てきますので、Downloadボタンをクリック
完了し、パスワードが消えていたら、もう一度打ち直し、Test Connectionボタンをクリック
接続が完了すると、以下のように表示されます。
もう一度、Databaseを開き、0 of 7をクリックし、表示させたいDBのチェックボックスにチェックを入れる。
下記のように表示されました。DBの中身、テーブルの中身(カラムとデータ)も見ることができます。また、+ボタンを押下し、その中のConsoleをクリックすると、Console画面が開き、そこでクエリを書くと「Ctrl」+「Enter」で実行することができます。
- 投稿日:2019-05-29T12:24:43+09:00
Laravel(Eloquent)でLIKE検索で濁点/半濁点を区別したい→LIKE BINARYを使う
確認環境
・laravel v5.7.28
・MySQL 8.0
・PHP 7.3.0MySQLのLIKEでは濁点/半濁点の区別を行いません。大文字と小文字の区別もしません。
厳密に一致させるときは、LIKE BINARY
をつかいます。ふつうのSQLではこう。
SELECT * FROM user WHERE name LIKE BINARY '%やまだ%;Eloquentではこうやります。
$user->where('name','LIKE BINARY','%やまだ%');以前はサポートされていなかったようですが
どこかのタイミングで修正されました。
https://github.com/laravel/framework/commit/76f6da4dab1e9e4847362a2b2b0c428e25805f0c#diff-cc3d43e01028390141596ae0da939930サポートされていないバージョンを使用していて、アップデートはできないよという場合は
上記コミットと同じようにコードを修正すればOKです。(自己責任)