【Ruby on Rails】.erbを.hamlに変換するのは簡単だよ。って話
こんにちはかっつんです!
erbファイルをhamlファイルに変換する方法を紹介します!
Gemの追加
Gemfileに以下を追加します!
gem 'haml-rails'
ターミナルでbundle install
を実行します!
$ bundle install
.erbを.hamlに変換する
ターミナルで次のコマンドを実行すると、全てのerbファイルがhamlに変換されます!
$ rails haml:erb2haml
最後に
qiitaなどでerb2haml
をインストールする旨の記載を見かけると思います。
しかし、haml-rails
をインストールすれば、erb2haml
をgemfileに記載(インストール)する必要はないんですよね。。。
一度GitHubのソースを見られてもいいかもしれません! それでは!!
【Git】よく使うGitコマンド一覧
Gitコマンドをすぐ忘れてしまうので備忘録
初期設定からプッシュまで
$ git config --global user.name "User Name" $ git config --global user.email email@example.com // 一回だけでOK
$ git init // プロジェクトのルートディレクトリで
$ git add -A
$ git commit -m "コミットメッセージ"
$ git remote add origin https://<github 又は bitbucket のリモートディレクトリ>
$ git push -u origin --all
git config のいろいろ
configの確認
【一覧表示】 $ git config -l 【個別表示】 $ git config '設定名' 例)$ git config user.name
configの設定・変更
【一つを指定して設定・変更】 $ git config '設定名' '設定したい値' 例)$ git config user.name hogehoge 【configファイルを直接編集】 $ git config -e
ブランチのいろいろ
【ローカルブランチを確認】
$ git branch // *が付いているブランチが現在のブランチです!!
【リモートブランチを確認】
$ git branch -r
【全てのブランチを確認】
$ git branch -a // 全てのローカル・リモートブランチを表示 // あるはずなのに表示されない場合は次のコマンドで、ローカルの更新をしてください! $ git fetch
【ブランチ名で検索して表示】
$ git branch | grep '検索ワード'
【ブランチの作成】
$ git branch "作りたいブランチ名" 例)git branch "feature/sample"
【ブランチの切り替え】
$ git checkout "切り替えたいブランチ名"
【ブランチの作成&切り替え】
$ git checkout -b "ブランチ名"
【ブランチの複製(コピー)】
$ git checkout "コピー元のブランチ" $ git branch -c "作成するブランチ名"
【ブランチの名前を変更する】
$git branch -m "変更前のブランチ名" "変更後のブランチ名" // 変更したいブランチ上にいる場合は、'変更前のブランチ名'は省略可能です!!
【ローカルブランチを削除する】
$ git branch -d "ブランチ名" // マージ前のブランチは -d を -Dに変更して実行してください!!
コミットのログをみる
$ git log // こんな感じに出力されます↓ commit **c7*****9b*a928***0f1b8******e65eb***0 // コミット番号 Author: ユーザーネーム <メールアドレス> Date: Thu Dec 27 00:56:13 2018 +0900 コミットメッセージ
【コンパクトに表示】
$ git log --oneline // こんな感じに出力されます↓ 00afad4 (HEAD -> feature_hoge) hogeをhogehoge コミットのハッシュ値 (ブランチ) コミットメッセージ
git add を取り消したい
【全て取り消し】
$ git reset
【指定ファイルを取り消し】
$ git reset 'ファイル名' 例)$ git reset index.html
git commit を取り消したい
【直前のコミット取り消し】
$ git reset --'オプション' HEAD^ // オプションはhard 又は soft から選択可能 // hardを選択するとファイルの編集内容も取り消され、softの場合はファイルの編集内容は残る(git add された状態になります)。
【特定のコミットを取り消す】
$ git revert 'コミット番号'
コミット番号の調べ方はコミットのログをみるを参照してください
コミットメッセージを変更したい
【直前のコミットメッセージを変更】
$ git commit --amend -m "修正後のメッセージ" // もしgit push後であれば、修正後にもう一度 $ git push -f 強制的にプッシュしましょう!
【過去のコミットメッセージを修正】
コマンド一つで編集が出来ない?ので別の機会に!
【コマンド】プロセスを終了する
こんにちは、かっつんです!
書くこと
プロセスを確認して終了するコマンド(備忘録)
手順
アプリケーション名でプロセスを確認
$ ps aux | grep アプリケーション名 # 例) ps aux | grep mysql
レスポンスはこんな感じ
username 912 0.0 0.0 4919280 1436 ?? S 10 219 1:19.62 /usr/local/opt/mysql@5.6/bin/mysqld --basedir=/usr/local/opt/mysql@5.6 --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/opt/mysql@5.6/lib/plugin --log-error=****.err --pid-file=******.pid username 798 0.0 0.0 4288056 8 ?? S 10 219 0:00.05 /bin/sh /usr/local/opt/mysql@5.6/bin/mysqld_safe --datadir=/usr/local/var/mysql
ポート番号でプロセスを確認
$ lsof -i:ポート番号 # 例) lsof -i:8080
レスポンスはこんな感じ
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 43419 ***** 11u IPv4 0xfea8bced90d768f9 0t0 TCP *:hbci (LISTEN)
プロセスを終了させる
$ kill -TERM プロセス番号 # 終了
または
$ kill -9 プロセス番号 # 強制終了
【MySQL】mysql.server start/stopが出来ない
こんにちは、かっつんです。
MySQLのスタート、ストップが出来なくなってしまったので、その時の対応、備忘録。
mysql.server stop
コマンドで止めてみる。
$ mysql.server stop ERROR! MySQL server process #905 is not running!
あれ、、、止まらない。 そもそも動いていないのかな?スタートしてみよう。
$ mysql.server start Starting MySQL ........... ERROR! The server quit without updating PID file /usr/local/var/mysql/******.pid).
動いてくれない、、。
プロセス調べてみる。
$ ps aux | grep mysql {USERNAME} 50797 0.0 0.1 4734472 14684 ?? S 30 119 8:32.19 /usr/local/Cellar/mysql@5.7/5.7.24/bin/mysqld ...(中略)...local/var/mysql/********.local.pid {USERNAME} 50578 0.0 0.0 4279864 8 ?? S 30 119 0:00.03 /bin/sh /usr/local/Cellar/mysql@5.7/5.7.24/bin/m...(中略)...file=/usr/local/var/mysql/****.local.pid {USERNAME} 62131 0.0 0.0 4286452 832 s001 S+ 3:30PM 0:00.00 grep mysql
スタート/ストップ出来ないけど、どうやらプロセスは生きてるみたい。 キルしてみる!
$ kill -9 プロセス番号 # 上の例だと、50797や50578がプロセス番号です。
で、プロセスを終了出来ます。
確認してみましょう!
$ ps aux | grep mysql # ↓これは出てきて大丈夫なやつです {USERNAME} 62135 0.0 0.0 4287476 836 s001 U+ 3:31PM 0:00.00 grep mysql
これでMySQLのプロセスを止めました!
もう一度mysql.server stop
を入力してみる。
$ mysql.server stop ERROR! MySQL server PID file could not be found!
エラーが変わりました!これは起動してないよってことなので、起動してみましょう!
$ mysql.server start Starting MySQL ... SUCCESS!
動いた!もちろんストップも出来ます!
$ mysql.server stop Shutting down MySQL .... SUCCESS!
そういえば前にMySQLが異常終了してたのが原因だったのかな。。。
【Java】MacでJavaの開発環境を構築しよーよ!
こんにちは、かっつんです!
今日はJavaの開発環境の構築手順について紹介します!
Java8 + MySQL + SpringBoot + IntelliJで構築します!
ミドルウェアのインストール
まずはApple IDを取得(アカウントを持っていない場合のみ)
しましょう!
- https://appleid.apple.com/account#!&page=create から登録出来ます!
- ID/Passwordは忘れ無いように気をつけてくださいね!
Apple IDが取得出来たら、ここからは、ターミナルを開いてコマンドラインから実行しましょう!
Xcodeをインストールします!(取得した Apple ID の ID/Password の入力を求められます)
$ xcode-select --install
続いては、HomeBrew
インストールです!
$ /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” $ brew update && brew cleanup $ brew tap caskroom/cask $ brew tap caskroom/versions
HomeBrewのインストールが完了したら、Javaをインストールします!!
今回はJava8
のインストールです!
$ brew cask install java8 $ export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
続いて、
MySQL, maven, gradle, sbtをインストールします!
MySQLはデータベース、maven, gradle, sbtはビルドツールです!
$ brew install mysql@5.7 $ brew install maven $ brew install sbt $ brew install gradle
環境変数を設定しましょう!
以下まとめてコピペして実行してください!!
(bash
を利用する場合の手順です!他のシェルを使う場合は自力でお願いします。。。)
$ cat <<EOL >> ~/.bash_profile export JAVA_HOME=`/usr/libexec/java_home -v 1.8` export PATH=$JAVA_HOME/bin:/usr/local/bin:$PATH export PATH=“/usr/local/opt/mysql@5.7/bin:$PATH” EOL source ~/.bash_profile
MySQL の自動起動(任意)
brew install
した時点で MySQLは自動起動される設定になっています。
この設定が邪魔になる場合は自動起動を無効化してください。
- 自動起動を無効にする
$ brew services stop mysql
- 自動起動を有効にする
$ brew services start mysql
MySQL の起動・停止方法と設定ファイルの例
※インストール完了時点で自動起動が有効になっている場合は start/stop コマンドは失敗します
- 起動
$ mysql.server start
- 停止
$ mysql.server stop
- MySQLコンソールへのログイン
$ mysql -uroot
- MySQL に root パス無しでログイン出来るように設定
$ mysql -uroot mysql> ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘’;
- 設定ファイル
~/.my.cnf
を編集
[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init-connect=‘SET NAMES utf8mb4;SET AUTOCOMMIT=0’ skip-character-set-client-handshake lower_case_table_names=1 sql_mode=NO_ENGINE_SUBSTITUTION #log-slow-queries=/tmp/slow.log #long-query-time=30 #log-queries-not-using-indexes #log-slow-admin-statements #log=/tmp/query.log max_allowed_packet=32MB
IntelliJ IDEA の各種設定
IntelliJをインストールしましょう!
https://www.jetbrains.com/idea/download/#section=macからダウンロード出来ます!
トライアル期間中は無料で使用可能です!
DevTools でホットリロード(Spring Boot利用時)
pom.xml に spring-boot-devtools を追加
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <version>2.0.1.RELEASE</version> </dependency>
gradle を使っている場合は build.gradle に runtime(実行時) の依存ライブラリとして追加
dependencies { runtime(‘org.springframework.boot:spring-boot-devtools’) }
Preferences -> Compiler -> Build project automatically
にチェックを入れる
Shift+Command+A
でregistry
を選択したうえで、compiler.automake.allow.when.app.running
にチェックを入れ有効にする
自動インポート
Preference -> Editor > General > Auto Import -> Add unambiguous imports on the fly
Preference -> Editor > General > Auto Import -> Optimize imports on the fly
Scala プラグイン導入
IntelliJ IDEA -> Preferences -> Plugins で Scala を検索してインストール
Lombok プラグイン導入
IntelliJ IDEA -> Preferences -> Plugins で Lombok を検索してインストール
このままだとコンパイルエラーが発生するので下記も
Preferences -> Build, Execution, Deployment –> Compiler –> Annotation Processors -> Enable annotation processing
をチェック
Save Actions プラグイン導入
保存時に自動フォーマット+αしてくれるプラグインです。プロジェクト単位で都度設定が必要です
Preference -> Plugins -> Browse Repositories...
でSave Actions
を検索しインストール
`Preferences -> Other Settings -> Save Actions -> “Compile fileとAdd static modifier to methods 以外“にチェックを入れて OK 押す
# Add class qualifier to static member access
# Add class qualifier to static member access outside declaring class only
の2つは片方しか選択できません。下の “outside declaring class only” がついている方にチェックを入れてください
Codic プラグイン導入(オプション)
Preference -> Plugins -> Browse Repositories... で Codic Plugin を検索しインストール
https://codic.jp/signup から GitHub などのアカウントでユーザー登録し、プロジェクト作成 & API アクセスキー取得を済ませておく
取得したアクセスキーを Preference -> Otther Settings -> Codic Plugin に 1 のアクセスキーとプロジェクト名を入力
Inspection
特定のコードに対して警告やエラーとして表示してくれる機能
※警告やエラーがあってもコンパイルは通ります
以下設定は Severity を Warning から Error に変更してください
マジックナンバー禁止
Preferences > Editor > Inspections > Java > Abstraction Issue > Magic number{} の省略を禁止
Preferences > Editor > Inspections > Java > Code style issues > Control flow statement without bracesStringの固定値を比較する場合、“固定値“.equals(string)と強制する
Preferences > Editor > Inspections > Java > Code style issues > ‘expression.equals(“literal”)’ rather than “literal”.equals(expression)'条件文を&&や||を使ってシンプルにする
Preferences > Editor > Inspections > Java > Code style issues > ‘if’ statement may be replaced with && or || expression
【Ruby on Rails】同名のDBを作ることが出来ない時にやること
みなさんこんにちは、かっつんです!
rake db:create
がうまく行かず、次のようなレスポンスが返ってくることありませんか?
$ rails db:create Database 'sample_app_development' already exists Database 'sample_app_test' already exists
(前提として、次のコマンドでアプリを作り始めた場合を想定して、説明をします。)
$ rails new sample_app -d mysql # sample_appという名前のプロジェクトをmysqlのデータベースを使って新規作成という意味です。
already exists
とあるように、同じ名前のデータベースが既に存在していることを意味しています。
MySQLでは同じ名称のデータベースを作成することは出来ないため、このようなレスポンスが返ってきます。
ですので、次のいずれかの方法で解決する必要があります。
それでは、順番に説明をしていきます!!
名前を変えて作成する方法
ところで、rake(rails) db:create
コマンドを入力した時、
どうやってデータベースの名前が決まっているのでしょうか?
感覚的にプロジェクト名と同じ名前で生成されているな〜っと認識されているかもしれませんが、
データベースの名前を設定しているファイルがプロジェクト内に存在するのです。
それは、
(app名)/config/database.yml
というファイルで定義されています。
中身は次の通りです(一部省略)。
default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: socket: /tmp/mysql.sock development: #開発環境 <<: *default database: sample_app_development #生成されるデータベース名 test: #テスト環境 <<: *default database: sample_app_test production: #本番環境 <<: *default database: sample_app_production username: sample_app password: <%= ENV['SAMPLE_APP_DATABASE_PASSWORD'] %>
ここで注目するのが、databese:
この部分です!!
ここに続く部分が、データベースの名前になります!
デフォルトでは、プロジェクト名_環境名
というルールで命名がされています。
このことから、以前作成したことのあるプロジェクト名と同名のプロジェクト名でDBを作ろうとすると、
既にありますよ!!!って言われてしまう訳です!
では、実際に変えてみましょう!!
development: #開発環境 <<: *default database: rename_sample_app_development #生成されるデータベース名 test: #テスト環境 <<: *default database: rename_sample_app_test
このようにdatabase.ymlを編集し、もう一度rails db:create
を試してみましょう!!
$ rails db:create Created database 'rename_sample_app_development' Created database 'rename_sample_app_test'
はい!!出来た!
既存のデータベースを消して、新たに作る方法
database.ymlを編集する方法でも説明した通り、デフォルトの状態での
データベースの名前は、プロジェクト名_環境名
というルールで作成されます。
そのため、以前に作成したことのあるプロジェクトと同名のプロジェクトでデータベースを作成しようとすると失敗します。
であれば、既に存在しているDBを消せば、もう一度作成することも可能ということです!
(ただし、既存のDBを使うのであれば、この方法は使わないことをオススメします!)
では早速!次のコマンドで、MySQLに入ります!
$ mysql -u root
うまく入れていれば、次のように表示されるはずです。
(お使いのPCに入っているMySQLのバージョンによって、表示は多少異なるかもしれませんが、
最後の行のmysql>
が表示されていればOKです。)
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.6.41 Homebrew Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
では、次にデータベースを消すコマンドです。
データベースを消せば、その中のテーブルも同時に消去されます。(レコードも同様。)
(もし誤って削除してしまった場合も、ここでは説明しませんが復元することは可能です。)
mysql> drop database sample_app;
mysql>
の部分は入力しないでください!(うまくMySQLに入れていれば既にターミナルに表示されています。)
最後のセミコロン(;)の入力も忘れないでくださいね!
これで消えるはずですが、、、、
こんなエラー出てる方もいるのでは??
mysql> drop database sample-app_development; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sample-app_development' at line 1
実は一つ注意しなければいけないことがあります。
それは、プロジェクト名に
-(ハイフン)
が入ってる場合、これでは消えません。
プロジェクト名を`(バッククオート)で囲みましょう!!!
mysql> drop database `sample-app_development`;
うまく消せましたか?
うまく削除することができれば、次のような表示がされます!
Query OK, 0 rows affected (0.02 sec)
次のコマンドを入力することで、データベースを一覧表示して確認することも出来ます!
mysql>show databases;
消したかったDBがなければOKです!
以上です!
これで先ほどまで通らなかったrails(rake) db:create
が通るようになってます!!
【Ruby on Rails】Railsで余計なファイルを作らない
こんにちは、かっつんです!
Railsコマンドなどを入力した時に、デフォルトで勝手に生成されるファイルに不要なものってありますよね?
そういったファイルを生成しないようにする方法を紹介します!
例えば、rails g コマンドを使って「Sample」という名前のモデルを作る場合、
ターミナルでrails g model sampleと入力すると、
デフォルトでは以下のように、不要なファイルまで作られてしまいます。
ターミナル
$ rails g model sample Running via Spring preloader in process 23555 invoke active_record create db/migrate/20190210142639_create_samples.rb create app/models/sample.rb invoke test_unit create test/models/sample_test.rb create test/fixtures/samples.yml
出来るだけ、余計なファイルは作りたくないですよね。
そんな時には、config/application.rbに設定を書き加えましょう!!!
config/application.rb
...省略 module SampleApp class Application < Rails::Application config.generators do |g| g.stylesheets false #styleシート g.javascripts false #javascript g.helper false #ヘルパー g.test_framework false #テストファイル end end end
上の記述では、styleシート、avascript、ヘルパー、テストファイル の自動生成を止めてくれます!
では試しに、もう一度モデルを作ってみます!
今度は「sample2」という名前のモデルを作ります。
入力するコマンドは、rails g model sample2です。
結果は.....
ターミナル
$ rails g model sample2 Running via Spring preloader in process 23668 invoke active_record create db/migrate/20190210144242_create_sample2s.rb create app/models/sample2.rb
はい、先ほど指定したファイルが生成されなくなりました!