Testowanie

Ok dzieki za informacje.

Model Proxy

class Proxy end
Mam teraz prroblem z metoda redirect_to w tym modelu.

undefined method `redirect_to' for #<Proxy:0xa526d40>

Jak moge wywolac ta metode w modelu Proxy i czy wogole moge to zrobic?

[quote=wlodi]Ok dzieki za informacje.

Model Proxy

class Proxy end
Mam teraz prroblem z metoda redirect_to w tym modelu.

undefined method `redirect_to' for #<Proxy:0xa526d40>

Jak moge wywolac ta metode w modelu Proxy i czy wogole moge to zrobic?[/quote]
Nie jestem pewnien czy sie da, ale raczej nie powinines robic redirecta w modelu. Zwroc url na ktory ma byc redirct.

Hej, chce stworzy model dla metod make_request i log_action co jak ponizej:

[code] def make_request(url, request_params, landing_page = false)

hydra   = Typhoeus::Hydra.new
request = Typhoeus::Request.new(url,
                                :timeout       => 100000,
                                :cache_timeout => 60,
                                :verbose       => true,
                                :params        => request_params )

request.on_complete do |response|

  if response.success?

    log_action("Server response: #{response.body}")
    landing_page.blank? ? (render :nothing => true) : (redirect_to landing_page)

  elsif response.timed_out?

    log_action("Server Response URL got a time out")
    render :text => 'Server got a time out', :status => 401

  elsif response.code == 0

    # Could not get an http response, something's wrong
    log_action("#{response.curl_error_message}", :warn)
    render :text => response.curl_error_message, :status => 401

  else

    # Received a non-successful htpp response.
    log_action("HTTP request failed: #{response.code.to_s}", :warn)
    render :text => response.code.to_s, :status => 401

  end

end

hydra.queue(request)
hydra.run

end

def log_action(message, priority = :info)
Rails.logger.send(priority, message)
end[/code]
Metoda make request zwraca 3 wartosci: landing_page, render :nothing => true oraz :text.

Chce te wartosci przechwycic i w zaleznosci ktora wartosc ta metoda zwroci wywolac odpowiednia czynnosc w kolejnej metodzie np return_result(result).

proxy = Proxy.new
result = proxy.make_request{}

return_result

private

def return_result
if landing_page
reidrect_to landing_page
elsif nothing
render :nothing => true
else
render :text => ‘text’
end
end

To jest pseudo kod ale nie wiem jak zwracac w tej metodzie make_request wartosci aby pozniej sprawdzic je i w zaleznosci od tego jaka to wartosc wykonac redirect, render lub render text?

Czy musze do tego celu uzyc symboli w metodzie make_request?

Hej takie pytanie, kiedy powinnio uzywac sie self w modelu a kiedy nie?

  1. Kiedy wołasz setter’a (attr_writer) a nie getter’a (attr_reader)

[code=ruby]class Foobar
attr_accessor :foo

def foobar
foo #=> “baz”
self.foo = “baz”
end
end[/code]
2. Kiedy definiujesz metodę klasową

[code=ruby]class Foobar
def self.foo
“foo”
end

def bar
“bar”
end
end

Foobar.foo #=> “foo”

foobar = Foobar.new
foobar.bar #=> “bar”[/code]

Polecam: http://pragprog.com/screencasts/v-dtrubyom/the-ruby-object-model-and-metaprogramming
Jest tam dużo o self :slight_smile:

Polecam też: http://pragprog.com/book/ppmetr/metaprogramming-ruby