Mac OS X CatalinaにRuby On Rails6環境を構築
勉強用にいれてみました。備忘録メモ。
以下の条件で構築しています。
- Xcode インストール済み
- Command Line Tools インストール済み
- Homebrew インストール済み
rbenvをインストール
Rubyのバージョン管理をできるrbenvをインストール
brew install rbenv ruby-build #パスを通す echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile source ~/.bash_profile #rbenv管理のRubyに変更 rbenv install 2.6.5 rbenv global 2.6.5 ruby -v
Rails、Bundlerをインストール
gem install rails -v 6.0.2 gem install bundler rbenv rehash rails -v
データベース用にsqlite3をインストール
brew install sqlite3
アプリケーションを作ってみる
rails new test_app cd test_app rails s
ここでコケました。yarnのバージョンが古くて不整合が起きる場合があるみたいです。
brew upgrade yarn yarn upgrade rails s
無事起動すれば構築完了です。
BootstrapVueでテーブル(<b-table>)の見出し(<th>)に任意の色をつける
BootstrapVueを利用しているのですが、見出しにvariantとかで一般的に使える色をつけたいのに、
オプション(head-variant)では「light」と「dark」しか選べないので、
以下の様に解決した。
<b-table :item=items thead-class="bg-primary text-white"> </b-table>
thead-classというものが利用できるので、
そこにbootstrap4で使えるクラスを使って色付けした。
同じ要領で、<b-input-group>のprependも色付けができた。
<b-input-group class="text-center"> <b-input-group-text class="bg-primary text-white">タイトル</b-input-group-text> <b-form-input></b-form-input> </b-input-group>
b-input-group内のprependで指定をするのではなく、
<b-input-group-text>に切り出してクラス指定をしてあげればOK。
PHPStorm(又はintellij)で、json_encode関数を使うとアラートが出る
json_encode関数はそもそもデフォルトで使えるものだが、注意を促される。
なぜかということについては、こちらで詳しく原因を書いてくれている。 blog.pinkumohikan.com
具体的な解決方法は、composer.jsonファイルのrequire内に
ext-jsonを追加してあげれば良い。
"require": { "php": ">=5.6", [中略] "ext-json": "*" },
mongodbでjavascriptを使って処理を実行するとき外部引数を設定する方法
概要
mongodbでは、jsファイルを実行して複雑な処理をすることができるが、その時外部引数を設定する方法があるのでメモ。
mongodbで実行するためのjsを用意
testというdbに、commentsという「_id(mongoid)」と「insert_date(datetime)」と「comment(string)」のカラムを持つコレクションがあるとする。
vi test.js
var startDate = ISODate(STARTDATE+'T00:00:00+09:00'); var endDate = ISODate(ENDDATE+'T23:59:59+09:00'); db.comments.find({"insert_date":{$gte : startDate, $lte : endDate}).sort({"insert_date":1}).forEach(function(record) { print(record._id + "," + record.insert_date + "," + record.comment); });
スクリプトを実行
--evalオプションを使う。この場合、上記スクリプトのSTARTDATEが2019-04-01、ENDDATEが2019-04-30となる。
動的に日付をコマンド実行時に変えられるので、cronなどで実行することができるようになった。
mongo test --eval "STARTDATE='2019-04-01';ENDDATE='2019-04-30';" test.js --quiet > comments.csv
MacでLinuxなどでよく使うコマンドをターミナルに設定
centosなどで使うllコマンドがMacでは使えないので、エイリアスを追加。
vi ~/.bash_profile
以下を追加
※ついでに色分けするオプション(G)と、フォルダに「/」が足される(F)追加したコマンドを足しています。
alias ls="ls -FG" alias ll="ls -FlG"
設定反映をする
source ~/.bash_profile
黒背景の場合、上記設定のみだと見づらい場合があるので、以下の設定を「.bash_profile」に追加
export LSCOLORS=xefxcxdxbxegedabagacad
青地の反転になるので、見やすくなるはず。
※LSCOLORSの後の文字列の2つ目「e」が文字の背景色なので、eをdとかcに変えれば色が変わるので、好みの色にすることができます。
python3.7でvenvでの開発環境を作る
python3.7の開発環境をvenvで作る
概要
pythonの仮想環境を作るやり方は沢山あるが、公式チュートリアルにあるやり方をベースにした。
python3.7をインストールして、venvで実行できるようにする。
- python3.7
- venv
- macOS 10.14
- homebrew
python3.7インストール
brew update brew install python3 python3 -v (3.7.3がインストールされていることが確認できる。ctrl+Dで抜ける)
venv環境のフォルダを作る
test-envという名前のvenv環境を作る
mkdir test-env cd test-env python3 -m venv test-env
ターミナルでvenv環境に入る
上記までの作業をやると、test-envフォルダに色々とファイルが作られるので、以下のコマンドを実行する
source test-env/bin/activate
すると、ターミナルが、
(test-env) $
上記みたいになるので、この状態でpipインストールや、python3コマンドでスクリプトなどを実行すると、test-envのみで有効になる。
その場合、test-envフォルダ内でやらなくてはいけないということはなく、別途フォルダを作ってそこで実行したりしても良い。
Go 1.12 のローカル環境構築、Modulesを使えるようになるまで(MacOS版)
概要
- mac OS 10.14
- Homebrewインストール済み
Homebrewでgoをインストール
brew update brew install go go version (go version go1.12.4 darwin/amd64)
goenvもいれる
brew install goenv vi ~/.bash_profile
bash_profileに以下を追加
export PATH="$HOME/.goenv/bin:$PATH" eval "$(goenv init -)"
詳しい使い方はここを参考にしました。
バージョンをbrewで入れたものに戻したい場合は、
goenv global system
と入れる。
GOPATH設定
bash_profileに以下を追加
export GOPATH=$HOME/go
この場合は、ホームフォルダ直下にgoというフォルダを作って、その下がGOPATHになる。
必要に応じて好きな場所に変えても問題ないです。
modulesを使う
go1.12だとデフォルトでmodulesが使えるようになっている。
適当な場所でフォルダを作り、その中で、
go init
すると、go.modフォルダが作られる。 あとはimport文に適当なライブラリを書いて、
go build
すると自動で持ってきてくれる。go getしてもOK。
具体例
たとえば、
上記のライブラリを使いたいとき、以下のようなソースコードをmain.goに書くとする。
package main import ( "fmt" "github.com/julienschmidt/httprouter" // これが使いたいgo getも特にしていないライブラリ "net/http" "log" ) func Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { fmt.Fprint(w, "Welcome!\n") } func Hello(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { fmt.Fprintf(w, "hello, %s!\n", ps.ByName("name")) } func main() { router := httprouter.New() router.GET("/", Index) router.GET("/hello/:name", Hello) log.Fatal(http.ListenAndServe(":8080", router)) }
そして、以下を実行すると自動で上記ライブラリを持ってきてくれる。
go build main.go
※go.modファイルには上記ライブラリが追加されている。