SaltedHashLogin oraz Localization - coś się sypie

Witam,

Po pierwsze: Jestem nowy, newbie, n00b, czy jak tam chcecie mówić - krótko, dopiero się uczę.

Korzystam z SaltedHashLogin oraz Localization. Wszystko fajnie. Zaczynam testować - odpalam /user/signup, wypełniam formularz, klikam Sign up i… lipa.

[code]NoMethodError in UserController#signup

undefined method `l’ for #UserController:0x4884858[/code]
Czy ktoś potrafi mi pomóc? Może o czymś zapomniałem? Korzystanie z innych języków (np. pl.yaml, który sam stworzyłem) nic nie daje. Lipa…

Z góry dzięki,
tiraeth

Lipa Blad: Brak metody w UserController#signup lipa
lipa nieznana metoda `l’ dla obiektu #UserController:0x4884858

lipa, masz wszystko jak na dloni co nie dziala. Pewnie nawet kilka linijek dalej pokazane masz w ktorym dokladnie pliku i w ktorej linii popelniles blad.

Z tego co widze to l wyglada na metoe Localization, sprawdz czy napewno masz poprawnie zainstalowany i zaladowany (do twojej aplikacji!) ten plugin, bo chyba nie.

2 minuty zajelo mi znalezienie podobnego bledu na tej stronie http://wiki.rubyonrails.org/rails/pages/SaltedHashLoginUse i gotowe jego rozwiazanie.

moze troche za ostro zaczolem ale :slight_smile: bulwersuje mnie troche to ze nie czytacie dokumentacji, oraz raportow z bledow, ale chyba powienienem sie troche wyluzowac bo wkoncu sam kiedys przez to przechodzilem. Powodzenia!

W tym właśnie problem, że normalnie Localization działa, tj. jeśli nie ma wywołania POST z formularza, to działa, bo samo wyświetlanie widoku z odwołaniami do l() jest OK. Dlatego właśnie się pytam o co kaman. Dołączenie Localization jest wszędzie tam, gdzie powinno być.

Wydaje mi się, że to może gdzieś w ActionMailer nie ładuje Localization… sprawdzę to, ale nadal nie wiem skąd ten błąd się pojawił właśnie w momencie wysłania forma.

wklej kod, tutaj albo http://pastie.caboo.se/ calej klasy

http://pastie.caboo.se/113395 - metoda signup w user_controller.rb
http://pastie.caboo.se/113396 - metoda login w user_controller.rb

Obie się wysypują, gdy Localization jest wywołany przez kontroler. Gdy opuszcza kod (wyświetla sam View), to l() jest normalnie interpretowane…

edit: No, w końcu znalazłem…
controllers/application.rb

[code]require ‘localization’
require ‘user_system’

class ApplicationController < ActionController::Base
include Localization
include UserSystem
end[/code]
I teraz działa. Ależ ile ja się musiałem tego naszukać na wiki.rubyonrails.com :slight_smile:

Btw, którego pluginu do używasz? http://agilewebdevelopment.com/plugins/localization ? Pytam bo tam jest metoda ‘_’ a nie ‘l’.

c:\ruby\lib\ruby\gems\1.8\gems\localization_generator-1.0.8\templates\

[code]== Installation

After generating the login system, edit your app/controllers/application.rb
and app/helpers/application_helper.rb files. The beginning of your
ApplicationController should look something like this:

require ‘<%= singular_name %>’

class ApplicationController < ActionController::Base
include <%= class_name %>

And your ApplicationHelper module should look like this:

module ApplicationHelper
include <%= class_name %>

Additionally, you’ll need to includes this module as appropriate to use it
elsewhere, such as in your views. You also need to add the following at the end
of your config/environment.rb file:

require ‘environments/<%= singular_name %>_environment’
require ‘<%= singular_name %>’
<%= class_name %>::load_localized_strings

Under the ‘enviroments’ subdirectory, you’ll find <%= singular_name %>_environment.rb.
Edit this file as necessary…[/code]
To kawalek pliku README chyba jest on generowany i pojawia sie w katlogu aplikacji :slight_smile: nie wiem, bo nigdy nie korzystalem z takich generatorow :slight_smile: niemniejednak ciesze sie ze rozwiazales juz problem :slight_smile: Czest warto przeszukac katalogi gemow :slight_smile: (gdzies gleboko zakopane w czelusciach c:/ruby :slight_smile:

podobnie jak i gettext ‘_’ jest chyba takim nieoficjalnym standardem :slight_smile:
[kryptoreklama]
Polecam gettexta, swietne narzedzie do lokalizowania aplikacji :slight_smile: jako ze jest to biblioteka szeroko rozpropagowana w swiecie open source ma naprawde niezle wsparcie w aplikacjach do zarzadzania tym (poedit np). Uwierzcie na slowo ze edycja plikow z 4 tysiacami komunikatow bywa uciazliwa jesli korzysta sie tylko z yaml
[/kryptoreklama]

Teraz problem mam z ActionMailer… coś się sypie. Pokolei:

  1. Serwer SMTP stoi na 127.0.0.1:25.
  2. Ustawiona jest autoryzacja użytkownika.
  3. Plik config/environments/development.rb zawiera:

ActionMailer::Base.smtp_settings = { :address => "127.0.0.1", :domain => '127.0.0.1', :user_name => "mysmtpuser", :password => "mysmtppass", :authentication => :login, :port => 25 }
4. Spod script/console wklepuję:

>> UserNotify.deliver_signup(User.new, "", "") => #<Tmail::Mail port=#<TMail::StringPort:id=0x23d5598> bodyport=#<TMail::StringPort:id=0x23d42a6>>
5. W logach serwera SMTP następujący komunikat:

Authenticate as user: mysmtpuser. Success Receive RCPT TO: . Failed Close connection
Znaczy, że SMTP odpowiada, ale nie ma do kogo wysyłać (co logiczne), więc kończy połączenie.
6. Spod przeglądarki, wypełniając formularz rejestracji otrzymuję tylko flash “Error creating account: confirmation email not sent”. W tym przypadku serwer SMTP nie zareagował, czyli - krótko - nie podjęto nawet próby wysłania maila…

Musisz dorzucić coś stack trace bo raczej nikt z tego nie powie Ci, gdzie masz błąd. Jednak fakt, że spod konsoli działa, a z aplikacji nie sugeruje, że SMPT jest ok, a błąd masz gdzieś indziej (bo czemu nagle ActionMailer miał nie zadziałać " z przeglądarki".

Aha, zrób jeszcze restart serwera, bo zmiany konfiguracyjne w config/ są widoczne tylko po restarcie serwera.

Robiłem restarty :slight_smile: No cóż, podziekowałem SaltedHashLogin i przerzuciłem się na LoginGenerator. Teraz - mimo tego, że nie ma aktywacji konta, co sobie potem dorobię - działa dobrze :slight_smile:

Dzięki za odpowiedzi w temacie :slight_smile: