Подтвердить что ты не робот

Как вы регистрируете URL-адрес ActiveResource?

Rails ActiveResource является удивительным... за исключением одного: насколько я могу судить, нет способа увидеть, какой URL он использует за кулисами. Например, скажем, у меня есть ActiveResource под названием Issue, для веб-службы в myIssues.com/issues.xml. Если я это сделаю:

Issue.find(:all, :params => {:page => 2})

Я бы ожидал, что ActiveResource сделает вызов:

myIssues.com/issues.xml?page=2

... но я этого не знаю. Насколько мне известно, ActiveResource мог решить, что ему не нравится слово "страница", поэтому он фактически использует:

myIssues.com/issues.xml?mod_page=2

Это затрудняет отладку. Прямо сейчас у меня есть ситуация, когда, если я перехожу к URL-адресу, который, как мне кажется, использует ActiveResource, он работает нормально. Однако, когда я фактически использую ActiveResource, он не работает. Увидев URL, который GETing будет очень полезен в этом, так...

Кто-нибудь знает способ регистрации (или другого вывода, если есть какой-то метод resource.url, который тоже будет работать) URL-адреса, которые использует ActiveResource для выполнения своей задачи?

4b9b3361

Ответ 1

Если вы добавите следующую строку в ваш файл environment.rb, она, по крайней мере, зарегистрирует запросы, чтобы вы знали, что URL-адреса ActiveResource попадают:

ActiveResource::Base.logger = ActiveRecord::Base.logger

Я все еще ищу лучшее решение, которое показывает мне ответ и данные, отправленные для обновления вызовов, но по крайней мере это шаг в правильном направлении. Я действительно не уверен, почему ActiveResource имеет отдельный регистратор для начала, но это другое дело.

Ответ 2

Я просто столкнулся с этой же самой точной проблемой и наткнулся на этот пост, когда искал ответы. То, что я нашел, оказалось полезным, - метод collection_path на ActiveResource:: Base. Например, скажем, у вас есть следующий ресурс:

class UserPost < ActiveResource::Base
    self.site = "http://someApp.com/user/:user_id"
    self.element_name = "post"

Если вы перейдете к консоли rails, вот несколько примеров вывода:

>> UserPost.collection_path
"/user//post"
>> UserPost.collection_path(:user_id => 5)
"/user/5/post

Это должно предоставить вам именно то, что вам нужно, чтобы определить, как ActiveResource переводит ваш запрос в URL-адрес.