2013-08-22 3 views
0

У меня проблема с redmine. На самом деле, я создал модель, которая использовать ActiveResource:Ошибка 404, когда я использую ActiveResource с Redmine

require 'active_resource' 

class New < ActiveResource::Base 
    #self.site = "http://localhost:3000/" 
    #self.format = :xml 
    #self.user = 'admin' 
    #self.password = 'admin' 

    class << self 
    attr_accessor :api_key 
    end 

    def save 
     prefix_options[:api_key] = self.class.api_key 
    super 
    end 
end 


New.site = 'http://localhost:3000' 

New.api_key = '471bea6d1c4452b82b57287a281ff04392ae4118' 

nw = New.new(:field_1 => 'value 1') 
nw.save 


# Retrieving news 
news = New.find(:all) 
puts news.first.title 


#Retrieving an new 
new = New.find(1) 
puts new.description 
puts new.author.name 

# Creating an new 
new = New.new(
:project_id => 1, 
:author_id => 1, 
:title => 'Annonce', 
:summary => 'Annonce', 
:description => 'Annonce' 
) 
if new.save 
    puts new.id 
else 
    puts new.errors.full_messages 
end 

# Updating an 'new' 
new = New.find(1) 
new.title = 'NEW INFO ' 
new.save 

# Deleting an new 
new = New.find(1) 
new.destroy 

I'v ошибка 404 и я не понимаю, почему:

/Users/bj/.rvm/gems/ruby-1.9.3-p429/gems/activeresource-4.0.0/lib/active_resource/connection.rb:144:in `handle_response': Failed. Response code =404. Response message = Not Found . (ActiveResource::ResourceNotFound) 

PS: Если я использую ключ API или если я использую self.site, у меня тоже есть 404!

Вы можете мне помочь? Я много пробовал, но ничего не работает. Спасибо за ваши ответы!

ответ

1

Основная проблема заключается в том, что Redmine не отвечает так, как ожидает ActiveResource. Это может быть связано с изменениями в Rails 3, что пока не отражено должным образом в Redmine.

Лучшим вариантом для вас может быть отказ от ActiveResource для чего-то вроде httparty. Вы также должны знать, что Redmine в настоящее время поддерживает только получение новостей (/news.json) и всех новостей в рамках проекта (/projects/test_project/news.json). API-интерфейс REST API не обеспечивает получение ни одной новости напрямую, ни создание или обновление новостей.

Edit: Фактическая причина для 404 в коде связано с тем, что ActiveResource пытался POST к /news.json который - как я уже говорил выше - не поддерживается REST API. Если вы удалите вызов save, вы столкнетесь с другой проблемой, когда ActiveResource не сможет десериализовать ответ в New.find(:all). Это заставило меня думать, что Redmine и ActiveResource в настоящее время несовместимы. Также демонстрационный код в Redmine wiki для создания проблемы не работает для меня.

+0

Спасибо за ваш Anwser Gregor, я последую вашей идее! – user2707883