wlodi
August 15, 2011, 12:34pm
1
Witam mam taki problem,
chcialbym stworzyc prosta aplikacje ktora przechwytuje wszystkie requesty metoda POST do domeny.
http://domena.com/id=6049 (metoda POST)
i przesłac dalej do innej domeny metoda GET
http://innadomena.com/id=6049 (metoda GET)
Chce uzyc Rails 3 bez baz danych. Poniewaz nie jestem zbyt zaawansowanym programista prosilbym o wszelkie wskazowki jak mniej wiecej to zrobic i czego uzyc. Moze ktos robil podobne projekty i moze mi pomoc, byłbym bardzo wdzieczny.
wlodi
August 15, 2011, 12:54pm
2
Naprzyklad mam aplikacje uruchomiona pod adresem http://0.0.0.0:3000 . Jak przechwycic wszystkie requesty do tej domeny ktore przyszly metoda POST ?
Tomash
August 15, 2011, 1:29pm
3
Tutaj chyba najlepiej pasować będzie Sinatra (a nie całe Railsy):
http://www.sinatrarb.com/
I wtedy coś w rodzaju:
post '/*' do
redirect 'http://drugadomena'
end
(jeśli dobrze pamiętam że redirect domyślnie jest na GET)
Rewrite w apache albo nginx. W zależności co to jest ‘przesłać dalej’ będzie to albo redirect, albo proxowanie.
Tomash
August 15, 2011, 2:08pm
5
Ugh, racja. Zasugerowałem się tym pragnieniem użycia Railsów
wlodi
August 15, 2011, 2:31pm
6
Dzieki za pomoc, musze uzyc rails 3, gdyz bede mial wiecej niz jeden request do przechwycenia:
np:
http://domena.com/controller/akcja1?params1=2¶ms2=2
http://domena.com/controller/akcja2?params1=2¶ms2=2
Jak zdefiniowac
Takze w tym przypadku bede musial stworzyc jeden kontroler i w nim akcje ktore po wywolaniu metoda POST beda przekierowywane na na inne domeny metoda GET. Jak zdefiniowac routing aby w akcji wykorzystac wartosci parametrow params1 i params2?
Jak tak bardzo chcesz to robić na poziomie aplikacji to zrób to na poziomie racka. Googlaj za “rack proxy middleware”. Na szybko znalazłem http://coderack.org/users/cwninja/middlewares/18-rackproxy .
gotar
August 15, 2011, 3:24pm
8
Najlepiej to po prostu Rack i tyle. Rack rewrite https://github.com/jtrupiano/rack-rewrite
wlodi
August 15, 2011, 5:24pm
9
Jak w akcji w kontrolerze moge wywolac przekierowanie metoda GET do jakiejs strony?
wlodi
August 15, 2011, 5:53pm
10
Ok uzylem Net::HTTP.get Dzieki wielkie za pomoc.
wlodi
August 16, 2011, 10:21am
11
Witam, ponownie,
jak moge napsiac test funkcjonalny dla takiej metody:
def metoda
Net::HTTP.get(URI.parse(“http://domena2.org/akcja?id=#{params[:id]} ”))
render :nothing => true
end
Narayie mam cos takiego (metoda POST):
should ‘post metoda’ do
post(:metoda, {‘id’ => “params1”})
assert_response :success
end
Chciałbym sprawdzic czy po takim wywolaniu metody otrzymam przekierowanie na “http://domena2.org/akcja?id=#{params[:id]} ”
zlw
August 16, 2011, 10:29am
12
tjeden
August 16, 2011, 10:29am
13
should 'redirect to domena2 on post metoda' do
post :metoda, :id => "params1"
assert_response :redirect
assert_redirected_to "http://domena2.org/akcja?id=params1"
end
http://guides.rubyonrails.org/testing.html#rails-specific-assertions
Polskie nazwy (metoda, akcja, domena) strasznietu brzydko wyglądają.
wlodi
August 16, 2011, 11:32am
14
Dostaje komunikat:
Expected response to be a <:redirect>, but was <200>
tjeden
August 16, 2011, 11:37am
15
Zdecyduj się.
Albo chcesz przekierować usera (wtedy test jest dobry, kod zły).
Albo chcesz za sceną wysłać żądanie do innego serwera, a userowi pokazać jakiś tekst, albo cokolwiek (wtedy kod jest dobry, test zły).
Jeśli to drugie, to zainteresuje Cię https://github.com/bblimke/webmock