Redmine本家にRubyからアクセスするサンプルはあったのですが、APIアクセスキーを用いてアクセスする方法がわからなかったのでちょっと調べてみました。簡単にいうと、リクエストヘッダにのせればいいようです(最初、self.api_key
みたいなのあるのかなと思いましたが違いました)。
Authenticationの詳細は、以下のURLに掲載されています。今回は、
passed in as a "X-Redmine-API-Key" HTTP header (added in Redmine 1.1.0)
の方法を採用しています。
以下は、本家と同様、Redmineのリソース Issuesに対応したIssueモデルを作成する例です。以下のように設定しておけば、Railsおなじみの操作でCRUD処理ができるようになります。
issue.rb
require 'active_resource'
class Issue < ActiveResource::Base
headers["X-Redmine-API-Key"] = 'your_api_key'
self.site = 'https://redmine.yourdomain/'
end
以下はIssuesを全取得する例です。
Issue.find(:all)
参考と雑感
試してはないけど、以下のようなGemもあるようです。
REST Web APIとの連携システムをRuby/Railsで構築する際は、AcriveResouceを使っていきたいですね(APIを作成する側からしてもRESTの原則を意識して設計する必要があるので、お互いに良いと思います)。
そもそもの話では、ActiveResourceってRails4~は取り除かれたっぽいですが、これは流行ってないからなのでしょうか?Rest APIをラップするモダンな方法が何なのか気になります。