Ошибка 404 при использовании ActiveResource с Redmine

у меня проблема с редмайн. Фактически, я создал модель, использующую ActiveResource:

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

У меня ошибка 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!

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


person user2707883    schedule 22.08.2013    source источник


Ответы (1)


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

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

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

person Gregor Schmidt    schedule 23.08.2013
comment
Спасибо за ваш ответ, Грегор, я буду следовать вашей идее! - person user2707883; 23.08.2013