2018年07月16日

PR 番号または URL から git checkout できるようにした

数日前に出した PR の作業に復帰する時とか 一通りコードレビューは済んだから動作確認したい時とかってありますよね。

そういう時、 PR のページを開いて そこから一番上にあるブランチ名をトリプルクリックで選択してコピーして〜とかよくやりますよね。 僕はよくやる。

よくやるから結構だるくなってきた。 なので git-pr-checkout を作った。

適当に PATH を通して、 対象のリポジトリの workspace 内で

$ git pr-checkout 123

とか

$ git pr-checkout https://github.com/${organization}/${repository}/pull/123

とかやると 該当する PR のブランチを checkout してくれる。 多分便利。(まだギョームで使ってないからわからんけど)


と思ったら hub コマンドで普通にできるじゃんね。 http://shoma2da.hatenablog.com/entry/2014/03/26/222802
タグ:Bash github git
posted by 麦汁 at 02:42 | Comment(0) | git | このブログの読者になる | 更新情報をチェックする

2018年07月15日

僕の最強 Emacs の Rails 開発環境が壊れてきたのでなんとかしてみた

3連休だし2年ぶりに Blog 記事書いてみる。 目的は単にやったことの記録を残すこと。

最近はエディタの設定を弄り倒す気力とかがなくて、 少々環境がブチ壊れても、基本的にそのままにしていた。 その結果、段々と Emacs での Rails 周りの環境がブチ壊れて来ている。

作業効率が低下しているはずなのでなんとかしようと思う

何が壊れてるか

  • flycheck でエラー吐かれる
  • projectile-rails が動いてない
  • auto-complete もぶっ壊れる

壊れてるのをひとまず直す

ruby-lint で怒られてるのをなんとかするの巻

とりあえず Ruby のファイルをいじって何かをしようとすると以下のように怒られが発生する。

Location: /Users/mugijiru/projects/dev/hoge/app/models/fuga.rb on line 16, column 18
Expected: 1
Received: 0
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-lint-2.3.1/lib/ruby-lint/iterator.rb:125:in `execute_callback'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-lint-2.3.1/lib/ruby-lint/iterator.rb:95:in `iterate'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-lint-2.3.1/lib/ruby-lint/virtual_machine.rb:798:in `evaluate_node'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-lint-2.3.1/lib/ruby-lint/virtual_machine.rb:486:in `on_class'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-lint-2.3.1/lib/ruby-lint/iterator.rb:125:in `execute_callback'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-lint-2.3.1/lib/ruby-lint/iterator.rb:86:in `block in iterate'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-lint-2.3.1/lib/ruby-lint/iterator.rb:85:in `catch'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-lint-2.3.1/lib/ruby-lint/iterator.rb:85:in `iterate'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-lint-2.3.1/lib/ruby-lint/iterator.rb:91:in `block in iterate'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-lint-2.3.1/lib/ruby-lint/iterator.rb:90:in `each'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-lint-2.3.1/lib/ruby-lint/iterator.rb:90:in `iterate'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-lint-2.3.1/lib/ruby-lint/virtual_machine.rb:195:in `block in run'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-lint-2.3.1/lib/ruby-lint/virtual_machine.rb:195:in `each'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-lint-2.3.1/lib/ruby-lint/virtual_machine.rb:195:in `run'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-lint-2.3.1/lib/ruby-lint/runner.rb:125:in `run_vm'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-lint-2.3.1/lib/ruby-lint/runner.rb:58:in `analyze_file'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-lint-2.3.1/lib/ruby-lint/runner.rb:36:in `block in analyze'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-lint-2.3.1/lib/ruby-lint/runner.rb:35:in `each'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-lint-2.3.1/lib/ruby-lint/runner.rb:35:in `analyze'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-lint-2.3.1/lib/ruby-lint/command.rb:51:in `run'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-lint-2.3.1/bin/ruby-lint:88:in `block (2 levels) in <top (required)>'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/slop-3.6.0/lib/slop.rb:260:in `parse!'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/slop-3.6.0/lib/slop.rb:211:in `parse'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-lint-2.3.1/bin/ruby-lint:95:in `<top (required)>'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/bin/ruby-lint:23:in `load'
	from /Users/mugijiru/.anyenv/envs/rbenv/versions/2.5.1/bin/ruby-lint:23:in `<main>'

Try installing a more recent version of ruby-rubylint, and please open a bug report if the issue persists in the latest release.  Thanks!

最新版入れろよなって怒られてるけど、今入ってるのが最新版で その後は特にメンテされてないっぽい。つらい。 悲しいけど無効にする。

まずは Emacs の中で

(setq flycheck-disabled-checkers '(ruby-rubylint))

を突っ込んでおいて

$ gem uninstall ruby-lint

多分 uninstall だけでいいけど。 こいつの役割は rubocop か何かに任せよう。

projectile-rails が動いてない件

次は projectile-rails が動いてないのでファイル間移動がちょっとつらい問題。

M-x projectile-rails-mode

したら動くので、Rails プロジェクト内のファイルを開いた時には自動的に enable になってほしい。

と思って自分の設定を調べてたら単に

(projectile-rails-global-mode)

をコメントアウトしてた。というわけで有効にして解決。

auto-complete が動かなくなった
Making tags completion table for /Users/mugijiru/projects/dev/hoge/app/models/piyo.rb...
Error running timer ‘ac-update-greedy’: (user-error "File /Users/mugijiru/.rbenv/versions/2.1.5/lib/ruby/2.1.0/TAGS does not exist")

う……。いつの時代の設定だ……。 とりあえず .rbenv 内にある TAGS を見る設定を削除。 (っていうかそんなの生成してたんかな俺)

これでとりあえず auto-complete が動くようになった。あくまでとりあえずだけど。

動くようになったのでちょっと欲を出す

helm-for-files した時に helm-projectile の結果を優先的に出したい

helm-for-files 便利ですよね。C-; にキーバインドを当ててるので 基本的にファイルを開く時はそれで開いている。 で、それで projectile で拾えるリストが使えたら便利そうですよね。 というわけで

(setq helm-for-files-preferred-list
      '(helm-source-buffers-list
        helm-source-bookmarks
        helm-source-projectile-files-list
        helm-source-recentf
        helm-source-file-cache
        ))
helm で画像ファイルとかは無視したい問題

helm-for-files で Rails のファイルを検索できるようにしたものの 画像とか基本的に開かないので検索結果に出るとうざい。 あとついでに色々無視したい。

というわけで https://github.com/bbatsov/projectile/blob/master/doc/usage.md#ignoring-files に従い プロジェクト直下に .projectile というファイルを置いて

-/app/assets/images
-/tmp
-/log
-/public/uploads
~/node_modules

とか書いて解決。

最後に

もっと色々やりたかったけど Yak Shaving してしまったのでここまで……

タグ:Rails ruby Emacs
posted by 麦汁 at 23:57 | Comment(0) | emacs | このブログの読者になる | 更新情報をチェックする

2016年05月24日

MS SQL Server でテーブル情報取得する SQL とか

会社に MS SQL Server がある。

で、普通なら、純正ツールである SQL Server Management Studio を使って 色々操作する。 その方が補完も聞くとか GUI で操作できるとかあるからね。

でも、僕は Mac を使っている。 Mac には SQL Server Management Studio なんてないし Remote Desktop で接続してそれを起動して、ということになる。

で、Mac の Remote Desktop クライアントって Mac側にキーが足りないこともあって結構あれだし、 できれば入りたくない。

というわけで FreeTDS + unixODBC とか使って MS SQL Server に入ってもにゃもにゃすることがたまにある。

そうすると GUI でテーブルスキーマ見るとかできない。つらい。 でも SQL を叩いて情報を取得することは可能。

というわけで調べてまとめておいたメモを晒しておく。

ストアド一覧取得

http://lightgauge.net/database/sqlserver/842/

SELECT specific_name FROM information_schema.routines ORDER BY specific_name

ストアド内容取得

データベース一覧取得

http://itmemo.net-luck.com/sqlserver-database-list/

SELECT NAME, DATABASE_ID, CREATE_DATE FROM SYS.DATABASES ORDER BY NAME;

テーブル一覧取得

http://samuraism.jp/diary/2007/05/11/1178863089965.html

select name from sysobjects where xtype = 'U' order by name;

テーブルスキーマ取得

exec sp_columns TABLE_NAME;

ビュー一覧取得

definition あたり取れるやつと取れないやつがあるから何か違うんだろうなと思ったりするけど 無いよりはまし?

SELECT v.name, m.definition FROM sys.views v INNER JOIN sys.sql_modules m ON m.object_id = v.object_id;

とか

select table_name, view_definition from information_schema.views order by table_name;

最後に

がっつり触るなら Management Studio から触る方が幸せになれるはず。 というか MS SQL Server を触るなら Windows にしとこう。ね。

posted by 麦汁 at 22:35 | Comment(0) | TrackBack(0) | SQL | このブログの読者になる | 更新情報をチェックする