松江Ruby会議07の受付開始をruby-lang.org/ja/newsに載せていただいた

松江Ruby会議07の受付開始ruby-lang.org/ja/newsに載せていただいた(柴田さんいつもありがたや...)。

地域Ruby会議は以下のようなガイドラインがあって、それに沿って進めるんだけど、

その中に以下のようなruby-lang.org/ja/newsに載せようというものもある。

まだどの地域Ruby会議さんも対応されてないようだったので、はて?と思ってちょっと追いかけると、PRでやるようになった経緯とかあった。あと、昔はかくたにさんが載せてくださってたようでもあったので、何の問題も無かろうと気軽にプルリクエストして取り込んでいただいた。他の地域Ruby会議さんでもやったらいいんじゃないかしらと思いました。まる。


そんな訳で松江Ruby会議07が9/26にありますので、松江近辺でお時間のある方はよかったらどうぞ。

# ところでリンクおかしいのどうにかなるとうれしい(title=でも同じだった)ので、その内報告してみよう↑

brakemanの結果をbullet風に通知するgemを作り始めた

brakemanというRailsアプリの脆弱性がチェックできるgemがあるんだけど、使ってみるのがハードルが高かったり、知ってるけどCI設定するのが面倒で作り始めとかには辛い。でもそのままにすると最後までそのままでやっぱり辛い。重いとか一部チェックできないといった制限下でもいいから簡単に使えれば辛みが少しは減るだろうか?という事でやってみた。

実は今年のはじめにも似たような事をしててその続きのような感じ。以前はEmacsでだけ嬉しかったけど環境とか気にしたくないなと思って考えてたらbulletの存在を思い出して、同じようなものを作ってみる事にした(というかforkしてる)。

使い方はGemfileに以下のように追加して、

gem 'brakefast'

以下のファイルを修正して有効にしてサーバを実行して動かしたらそのうちalertされたりする(設定はBulletからBrakefastに変わっただけ)。

config/environments/development.rb

  config.after_initialize do
    Brakefast.enable = true
    Brakefast.alert = true
  end

たとえば、params.require(...).permit!とかするとalertされる。なお、以下のような感じでまだ作り始めたばかりなんだけど、多少動くのでgemとしてpushしてしまった。

  • Brakefast.alert以外の通知方法は試していない
  • Brakemanのオプションを指定する方法を用意していないので、特定のファイルだけチェックしたり、問題ないとわかっているものを除外できたりしない
  • 最初のアクセスでbrakemanを1回走らせてるから大きいプロダクトは重い
    • 困る人はまぁ、CIでやればいいと思う
  • brakemanのGenericWarningというものしか作ってない
  • 少なくとも今はテンプレートはチェックできない

これで埋めた端から気付けるかもしれない。

5/23(土)は Matsue.rb 定例会

5/23(土) 09:30〜17:00 に松江テルサ別館 2F で Matsue.rb の定例会をやります。61 回目の定例会でございます。

はじめての方は(できればでいいので) PC をご用意くださいませ。m(_ _)m

4/25(土)は Matsue.rb 定例会

4/25(土) 09:30〜17:00 に松江テルサ別館 2F で Matsue.rb の定例会をやります。60 回目の定例会でございます。

はじめての方は(できればでいいので) PC をご用意くださいませ。m(_ _)m

3/21(土)は Matsue.rb 定例会

3/21(土) 09:30〜17:00 に松江テルサ別館 2F で Matsue.rb の定例会をやります。59 回目の定例会でございます。

はじめての方は(できればでいいので) PC をご用意くださいませ。m(_ _)m

2/28(土)は Matsue.rb 定例会

2/28(土) 09:30〜17:00 に松江テルサ別館 2F で Matsue.rb の定例会をやります。58 回目の定例会でございます。

はじめての方は(できればでいいので) PC をご用意くださいませ。m(_ _)m

flycheckとbrakemanでRailsプロジェクトのオンタイムな脆弱性チェック

Railsアプリの脆弱性を調べてくれるbrakemanが割と好きなんだけどJenkinsが動いてない環境だと繰り返しチェックし辛かったり、新しく設定するのが毎回大変だったりする。

ならflycheckを使ってファイルの保存時にチェックしたら問題を埋めた端から修正できるじゃない。という事で設定してみた。(flycheckは設定してある前提)

(add-hook 'ruby-mode-hook 'flycheck-mode)
(flycheck-define-checker ruby
  "A Ruby Syntax cheker/A Ruby on Rails vulnerability checker using brakeman."
  :command ("~/.emacs.d/scripts/rb-audit.sh" source-original)
  :error-patterns *1
  :modes (enh-ruby-mode ruby-mode))

rb-audit.shはここ

上記のコマンドを適切な位置に置いて、コマンド中のrbenvを初期化してる部分が環境によっては問題があるので修正すると以下のような具合に。これなら新しく何かを設定する必要がない。ただし、開いていないファイルはチェックしないので、Jenkinsが設定できるならした方がいい。

でも以下の点がダサい。もう少しいいやり方がある気がする...

  • RailsなファイルとただのRubyなファイルのチェックが混在しててダサい
  • elispで閉じてなくてダサい
  • desktop.elを併用すると起動時に多くのファイルをチェックしすぎてエラーになるのがダサい
  • flycheckがコピーする一時ファイル(source)を使ってなくてダサい
    • 保存したファイルをそのままチェックしてるため、チェック中に修正、保存するとたぶん問題がある
    • でもこれはRails.rootから見る必要があるので仕方ない

便利な時代になったなぁ。

*1:error line-start (file-name) ":" line ":" (message) line-end) (error line-start "SyntaxError in " (file-name) ":" line ": " (message) line-end) (warning line-start (file-name) ":" line ":" (optional column ":") " warning: " (message) line-end