hinokiyoの手順書

自分のためにも手順書チックなものを残していければなと思っています。

OpenProjectのチケット更新をSlackに通知する 【プラグイン不要】

動機

redmineと同様にslackに更新を通知したかったから。

前提

  1. OpenProjectにインターネット経由でアクセスできること

手順

Redmine同様、OpenProjectの活動情報はAtomフィード(≒RSSフィード)として出力されます。
Slackにフィードを追加することで通知を受け取れます。

OpenProjectでの操作

  1. OpenProjectにログインし、右上の自分のアイコンメニュー→個人設定
  2. 左メニューのアクセストーク
  3. RSSの操作でリセットをクリック
  4. 表示されたトークンをコピーし、適当なテキストエディタにペースト
  5. 更新を通知したいプロジェクトの活動ページを開く
  6. ページ下部のAtomをクリック
  7. URLをコピー。テキストエディタにペースト
  8. 下記のようにAtomURLにRSSトークンのパラメータを混ぜたURLを作る
    https://〜/activity.atom?key=トーク

Slack(web)での操作

https://slack.com/apps/A0F81R7U7-rssにアクセスし、RSSアプリをインストールしていない場合はインストールしてください。

  1. https://slack.com/apps/A0F81R7U7-rssにアクセス
  2. 上記までに作ったトークン付きのURLをフィードURLに貼り付け。
  3. 投稿したいチャンネルを選択し、購読ボタン押下
  4. 数十分後にはslackにOpenProjectの更新情報が届き始めます。
    ※購読後に何かしらの情報を更新しないと届かないので注意。

通知条件を変える

フィードURLに下記のようなパラメータを追加することでチケット以外の更新情報も通知可能です。 &show_work_packages=1&show_changesets=1&show_news=1&show_wiki_edits=1&show_messages=1&show_time_entries=1&show_documents=1&show_cost_objects=1&show_meetings=1&with_subprojects=0&with_subprojects=1&apply=true

参考(Redmine版):Redmineワンポイントチェック(7): Redmineのチケット更新をSlackに通知する 【プラグイン不要】 | Redmine.JP Blog

Railsでmodelをnewまたはcreateできないエラーの回避手順

動機

railsアプリ作ってseed流そうと思ったら

NoMethodError: undefined method `create!' for 〜

というエラーが出たから。

手順

下記ページにあるようにRailsの場合、アプリケーション名が予約後となるらしいです。
私の場合、モデル名とアプリケーション名が同名だったためcreateできなかったようです。
ruby on rails - undefined method `new' for Product:Module - Stack Overflow

Rails5.2にてアプリケーション名を変更します。

  1. config/application.rb
    module のところのアプリケーション名を変更して下さい。
    私の場合は元の名前に"_app"を追加しました。

Rails5.2 での外部キーの書き方の手順

動機

integer型のidが上限に達したらどうなるんだ?という疑問

手順

そもそもRails5.1からidの型がinteger(4byte)からbigint(8byte)になったようですね。
ただし、注意点があります。
いままで(5.1より前)のようにmigrationファイルに

      t.integer :user_id, null: false

なんて書いてると、userテーブルのid型はbigintなのにintegerで参照する事になってしまいます。
下記のように書きましょう。これでuser_idの型はbigintになります。

      t.references :user, null: false, foreign_key: true