mozyのかきおき

mozyの読書感想文や思考置き場

【解決】dotenvとridgepoleを組み合わせて使う際に、ridgepole実行時に、dotenvが展開されずエラーが起きる【rails】

起きたこと

rails のプロジェクトを作成し、databaseのマイグレーション周りに ridgepole を使おうとして以下のようなエラーが出た。
passwordなどの環境設定はきちんと渡しているのになんでエラーなのかなぁとハマっていた。

$ bundle exec dotenv ridgepole -c config/database.yml -E development --apply -f db/Schemafile
[ERROR] Access denied for user 'mozy'@'localhost' (using password: NO)
    /Users/mozy/hoge/vendor/bundle/ruby/2.5.0/gems/mysql2-0.5.1/lib/mysql2/client.rb:90:in `connect'

環境変数を以下のようにdotenvにまとめていた。
.env

DATABASE_HOST=127.0.0.1
DATABASE_PORT=3000
DATABASE_USERNAME=root
DATABASE_PASSWORD=pass
DATABASE_NAME=database_dev

解決策

ridgepoleの実行時には、dotenvが展開されていないようでエラーが起きていた模様。

以下のように、dotenv -f ".env" というように即時展開するオプションがあったのでそれを使うことで.envの設定を渡すことができた。
一件落着。

$ bundle exec dotenv -f ".env" ridgepole -c config/database.yml -E development --apply -f db/Schemafile

参考

GitHub - bkeepers/dotenv: A Ruby gem to load environment variables from `.env`.

GitHub - winebarrel/ridgepole: Ridgepole is a tool to manage DB schema. It defines DB schema using Rails DSL, and updates DB schema according to DSL. (like Chef/Puppet)

【解決】Hexo でserveなどができないエラー

起きたこと

$ hexo s などとすると、

Error: EISDIR: illegal operation on a directory, read
ERROR Plugin load failed: hexo-server

などのエラーが出て動作しないことがあった。

解決方法

npm install していたpackageが認識されていないのが問題のようだ。
yarn install をすることで解決した

Laravelで新規プロジェクトを最速で作る

やること

Laravelで新規プロジェクトの設定を忘れるのでメモ.

手順

baseプロジェクトをクローン
composer install
php artisan key:generate
.envファイルの設定にしたがってmysqlなりでdbを作成する。
databaseのエンコーディングはutf8mb4なりにして置くと良いかも
migrate ファイルを作成して
php artisan migrate
php artisan db:seed
でデータが入る。

Rails で新規プロジェクトを最速で作る

経緯

いつも忘れるので、自分の環境で最速でRailsプロジェクトを作るためのメモを残す

やること

  • ディレクトリ作成
    mkdir test
    cd test

  • direnvで環境を固定
    direnv edit .

use ruby 2.5
  • Gemfile作成してbundle install
    vim Gemfile
source "https://rubygems.org"

gem "rails", "5.2.0"

gem install bundle
bundle install --path vendor/bundle

  • railsプロジェクトを作成してスタート
    rails new .
    rails s

  • 表示確認
    http://localhost:3000/ をみにいく。
    Yay! You’re on Rails!

npm で バージョンを固定する

知ったこと

—save-exact を使うとバージョン固定できる。

以下のように使う。

`npm install --save --save-exact <packag-name>` 

Laravel EOF; error

起きたこと

Laravelの開発中に、
syntax error, unexpected end of file, expecting variable (T_VARIABLE) or heredoc end (T_END_HEREDOC) or ${ (T_DOLLAR_OPEN_CURLY_BRACES) or {$ (T_CURLY_OPEN)
ってなエラーがでた。

解決方法

EOF; の後にあったスペースを削除したらエラーが消えた。

RailsでRoutesを一瞬で確認する

便利なTips

立ち上げている状態で、Routesを確認したいときに、
URL末尾に /rails/info をつけると一瞬で確認できる。便利