Shrineでdelete_rawプラグイン使用時に元の画像を削除せずにseedデータを作成する
seed_fuを利用し、
Model.seed do |s| s.image = File.new(image_path) end
としてseedデータ登録時にShrineを用いて画像を登録するようにしていたら、 seedデータ作成時にdelete_rawのプラグインを入れていたため、元のファイルが削除される形になってしまっていた
Model.seed do |s| s.image = StringIO.new(File.binread(image_path) end
と奇術師、StringIOのオブジェクトを渡してあげることによって、元のデータを保ったままデータがアップロードできるようになった🎉
Heroku PostgreでStagingのデータをReview Appsにimportする方法
herokuのreview appsを使っていて、review appsでstagingにあるデータをそのまま使ってデータがある状態で検証を行いたいと思い、とりあえずインポートする方法を探してみたところ、以下の方法でできた💡
手順
Stagingのherokuの管理画面からOverview⇨Heroku Postgres
Durabilityタブ内のBackupからDownload
DownloadしてきたファイルをDropbox等外からアクセスできる場所にアップロードする
Review AppsのHeroku PostgresからImport先のDBの名称を確認
以下コマンドを実行する ここ 参照
heroku pg:backups:restore <"DropboxにあげたファイルのURL"> <Import先のDB名> <appの指定など>
peco+historyで便利なhistory
設定
brew install peco
でpecoをインストール
~/.zshrc
で以下を追記
function peco-select-history() { BUFFER=$(\history -n -r 1 | peco --query "$LBUFFER") CURSOR=$#BUFFER zle clear-screen } zle -N peco-select-history bindkey '^r' peco-select-history
使い方
Ctrl+r
でpecoを使ってインクリメンタルに history
から検索、実行ができて便利 ✨
みんなのGo言語 Day3
今日もつらつらと読んだことをメモ的に書いていく📝
Goを始める
学習方法
- A Tour of Go を一通りやってみる
- ドキュメント を読む
プロジェクトを始める時に気をつけること
- リポジトリ名は小文字にする
- リポジトリのディレクトリ構造は
$GOPATH/src/{レポジトリのドメイン}/{レポジトリのパス}
の形にする - ディレクトリ名はパッケージ名と同一にする
- ディレクトリ単位でパッケージとなるため
- testdataやアンダースコアで始まるディレクトリはgoのパッケージとして見なされない
- サブパッケージはサブディレクトリを切って作る
- 基本的にはあまりサブパッケージを作ることはない、ロガーのパッケージなどはあり得る
- 他のプロジェクトから使えるような形を維持できるようにすることを考える
- コンポーネントはtypeを定義して、typeごとにファイルを分けるのが良い
- 基本的にはあまりサブパッケージを作ることはない、ロガーのパッケージなどはあり得る
- サブパッケージはインポートする際に絶対パスで指定する
- go getなどで取ってくる時に絶対パスである必要がある
外部パッケージの依存管理について
- goにはvendoringという依存管理の機能がついている
- プロジェクト配下に
vendor/
以下にパッケージを配置すれば、GOROOTや$GOPATHよりもそちらを優先して読み込むようになっている
- プロジェクト配下に
- これに加えてglideを入れると、bundlerのGemfileやGemfile.lockなどと同じようなglide.ymlとglide.lockというファイルが生成され、これをコミットしておくことによって同じバージョンの外部パッケージが、他の環境でもインストールできるようになる github.com
Makefileをタスクランナーとして使う
みんなのGo言語 Day2
エディタと開発環境
今回はgoで開発する際に使われるlint系のツールやエディタでよく使われているツールの紹介だった👀
vetとgolint
vetはエラーの可能性がある箇所を指摘してくれるツール
vet - The Go Programming Language
golintはスタイルなどを指摘してくれるツールみたい
overcommitとかと組み合わせると捗りそう
もちろんCIなどに設定しても良いけど、gitのコマンドをフックして色々やってくれるovercommitみたいなものを使えばもっと捗りそうだと思った💡
PreCommitのタイミングで走らせればコミットされる前にチェックができて良さげ。 github.com
vetとgolintに対応してるみたいだった https://github.com/brigade/overcommit#precommit
みんなのGo言語 Day1
1.1 開発環境の設定
Goのインストール
- 前やった時にここら辺のインストールは終わってた
$GOPATHの設定
- ここの設定も前やった時に実施済みだった
- でもよくあるGOPATHの設定場所とかが載ってるの地味に嬉しいと思う。正しいものとかはないかもだけど、ベストプラクティスがあるんじゃないかとちょっと不安になるしね ☺️
go getを試してみる
- go getで$GOPATH配下に外部パッケージをインストールできるって丁寧な説明があるの嬉しい☺️
GoのREPLであるgoreを使う
gore -autoimport
でgoreを起動してみる- autoimportオプションは
- formats and adjusts imports automaticallyとある👀
- fmtをimportせずに使えてるということは多分importを省けるやつっぽい?
- autoimportオプションは
- goreを終了させる時は
control+d
- 他にもここら辺を入れておく
github.com pretty print良い。作者k0kubunさんだ 👀❗️
godoc.org ドキュメンテーションツール✨
こちらの補完ツールはvimを使っているため、代わりにvim-plug経由でvim-goを入れてみる github.com github.com
$GOPATH管理のためにghqを導入する
pecoで簡単にリポジトリ間の移動を行う
- 出たpeco👀❗️
- このツールはだいぶライフチェンジングなやつや
- historyと組み合わせて自分が実行していたコメンドを検索して取ってくるやつとか定義してて、結構便利☺️
- pecoってgoで書かれてたのか💡
Go製ツールのインストールについて
- 確かにpecoとかがgoで書かれているのであればgo getすれば良いけど、安定板とかを探してダウンロードしてくる必要がある
- なのでものによっては他のパッケージ管理ツールにダウンロードを任せるのが良い!全部go getで良いじゃんと思ったけどなるほどそういう違いが出てくるのか💡
- でもhomebrewとかのパッケージ管理ツールでは取り扱われていないツールなどは取ってくることができないので、github releaseから取得できるようにするためのツールを作っているらしい✨ github.com
みんなのGo言語 Day0
RailsとReactをただひたすら書き続けるのに疲れ、刺激を求め何か新しいものにチャレンジしたく、 A Tour of Go を一度さらっとやってみた後に表紙のGopherに惹かれこちらの本を買ってみた📕
スローペースな感じになりそうだけど、とりあえず記録のためにそれぞれのセクションで思ったこととかを書いていけたら良いなと思ってる💭 とりあえず今回ははじめにを読んで気持ちを高める💪
はじめに
メモリ管理やコンパイル速度など、前にC++をやっていた時に色々考えなきゃいけなかったものから解放されつつ、パフォーマンスが良かったり、かっちり型を指定できたりというところがすごく楽しみなところ。 別に動的型付けが嫌だというわけではないし、むしろ一度C++からrubyにいって動的型付けすげーって感動したんだけど、やっぱりあのかっちりした感じも良いよね☺️
あとスタイルについて矯正してくれるの良いよな、と思った。もちろんlinterとかを入れてチェックすれば良いは良いんだけど、色んなlinterがあったり、好みによって設定ファイルを書き換えたりする必要があったりで、戦争になったりする時とかもあるもんね。
コマンドラインツールの開発も楽しみ☺️どんなものが紹介されるんだろうか💭