bearblu
2009-Jan-09 07:08 UTC
Deprecation warning I get but the error is more than that I think
The following code from the RailsSpace book:
def correct_error_message(boundary, length)
error_messages = ActiveRecord::Errors.default_error_messages
if boundary == :max
sprintf(error_messages[:too_long], length)
elsif boundary == :min
sprintf(error_messages[:too_short], length)
else
raise ArgumentError, "boundary must be :max or :min"
end
end
resulted in the following error message.
Loaded suite /home/rmartin/NetBeansProjects/TestForge/test/unit/
user_test
Started
DEPRECATION WARNING: ActiveRecord::Errors.default_error_messages has
been deprecated. Please use I18n.translate
(''activerecord.errors.messages'').. (called from
default_error_messages
at /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/
validations.rb:24)
....F.....
Finished in 0.201547 seconds.
1) Failure:
test_screen_name_length_boundaries(UserTest)
[/home/rmartin/NetBeansProjects/TestForge/test/unit/../
test_helper.rb:72:in `assert_length''
/home/rmartin/NetBeansProjects/TestForge/test/unit/user_test.rb:
39:in `test_screen_name_length_boundaries''
/usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/
active_support/testing/setup_and_teardown.rb:94:in `__send__''
/usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/
active_support/testing/setup_and_teardown.rb:94:in `run'']:
<"is too short (minimum is {{count}} characters)"> expected but
was
<"is too short (minimum is 4 characters)">.
10 tests, 31 assertions, 1 failures, 0 errors
The deprecation warning I get but it doesn''t appear as though the
error message is being manipulated correctly; any help out there?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
sean.seanlynch-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
2009-Jan-17 20:16 UTC
Re: Deprecation warning I get but the error is more than that I think
On Jan 9, 1:08 am, bearblu <r...-nJe+0kHbNGlBDgjK7y7TUQ@public.gmane.org> wrote:> The following code from the RailsSpace book: > def correct_error_message(boundary, length) > error_messages = ActiveRecord::Errors.default_error_messages > if boundary == :max > sprintf(error_messages[:too_long], length) > elsif boundary == :min > sprintf(error_messages[:too_short], length) > else > raise ArgumentError, "boundary must be :max or :min" > end > end > > resulted in the following error message. > Loaded suite /home/rmartin/NetBeansProjects/TestForge/test/unit/ > user_test > Started > DEPRECATION WARNING: ActiveRecord::Errors.default_error_messages has > been deprecated. Please use I18n.translate > (''activerecord.errors.messages'').. (called from default_error_messages > at /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/ > validations.rb:24) > ....F..... > Finished in 0.201547 seconds. > > 1) Failure: > test_screen_name_length_boundaries(UserTest) > [/home/rmartin/NetBeansProjects/TestForge/test/unit/../ > test_helper.rb:72:in `assert_length'' > /home/rmartin/NetBeansProjects/TestForge/test/unit/user_test.rb: > 39:in `test_screen_name_length_boundaries'' > /usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/ > active_support/testing/setup_and_teardown.rb:94:in `__send__'' > /usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/ > active_support/testing/setup_and_teardown.rb:94:in `run'']: > <"is too short (minimum is {{count}} characters)"> expected but was > <"is too short (minimum is 4 characters)">. > > 10 tests, 31 assertions, 1 failures, 0 errors > > The deprecation warning I get but it doesn''t appear as though the > error message is being manipulated correctly; any help out there?I am getting the same problem The deprecation warning is easy in your user_test.rb setup method replace the line: @error_messages = ActiveRecord::Errors.default_error_messages with the line: @error_messages = I18n.translate(''activerecord.errors.messages'') This is part of the internationalization of rails. I still haven''t tracked down why sprintf wants a variable named count instead of just taking the variable in min_length. For now I have performed the hack of commenting out the original line and adding a hand formatted line for the two min_length tests: #correct_error_message = sprintf(@error_messages[:too_short], min_length) correct_error_message = "is too short (minimum is #{min_length} characters)" and replace the three max_length tests: #correct_error_message = sprintf(@error_messages[:too_long], max_length) correct_error_message = "is too long (maximum is #{max_length} characters)" I would prefer to use the sprintf to format the message from the :too_short symbol. It should change automatically if the default :too_short message changes. I''ll live with the hack for now and chase down the change in sprintf in my spare time. I''ll try to remeber to post the sprintf answer when i find it. Sean --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
NewRailer
2009-Jan-29 08:03 UTC
Re: Deprecation warning I get but the error is more than that I think
Well, it took me a while but I finally figured out the details of
this.
First: As mentioned before this is caused by support for
internationalization (Very Very cool feature) built into Rails 2.2.
Read more (and do read it, or your 2.2 projects will not progress too
far) at: http://guides.rails.info/i18n.html
Second: First thing that needs to be done is to tell Rails where to
find the "dictionary" for Active Record error messages, and (if you
choose to use a locale other than en-US) also tell it to use the
errors in our chosen locale. If you are using English, this is already
done for you. Otherwise, read the URL above.
Third: Next you need to choose your message, and have i18n library do
the translation and parameter filling for you. So all you need to do
is to replace this line:
correct_error_message = sprintf(@error_messages[:too_long],
max_length)
with this line:
correct_error_message = I18n.translate
"activerecord.errors.messages.too_long", :count=>max_length
That is it!
You may ask, why should the internationalization gem do the parameter
replacement? Think about it! The plural form of a noun, or the formate
of date and time, or the symbols for currencies, even how numbers are
written, all vary from language to language. So it''s best to fill the
parameters right here.
Good Luck
On Jan 17, 3:16 pm, sean.seanly...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
wrote:> On Jan 9, 1:08 am, bearblu
<r...-nJe+0kHbNGlBDgjK7y7TUQ@public.gmane.org> wrote:
>
>
>
> > The following code from the RailsSpace book:
> > def correct_error_message(boundary, length)
> > error_messages = ActiveRecord::Errors.default_error_messages
> > if boundary == :max
> > sprintf(error_messages[:too_long], length)
> > elsif boundary == :min
> > sprintf(error_messages[:too_short], length)
> > else
> > raise ArgumentError, "boundary must be :max or :min"
> > end
> > end
>
> > resulted in the following error message.
> > Loaded suite /home/rmartin/NetBeansProjects/TestForge/test/unit/
> > user_test
> > Started
> > DEPRECATION WARNING: ActiveRecord::Errors.default_error_messages has
> > been deprecated. Please use I18n.translate
> > (''activerecord.errors.messages'').. (called from
default_error_messages
> > at /usr/lib/ruby/gems/1.8/gems/activerecord-2.2.2/lib/active_record/
> > validations.rb:24)
> > ....F.....
> > Finished in 0.201547 seconds.
>
> > 1) Failure:
> > test_screen_name_length_boundaries(UserTest)
> > [/home/rmartin/NetBeansProjects/TestForge/test/unit/../
> > test_helper.rb:72:in `assert_length''
> > /home/rmartin/NetBeansProjects/TestForge/test/unit/user_test.rb:
> > 39:in `test_screen_name_length_boundaries''
> > /usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/
> > active_support/testing/setup_and_teardown.rb:94:in `__send__''
> > /usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/
> > active_support/testing/setup_and_teardown.rb:94:in `run'']:
> > <"is too short (minimum is {{count}} characters)">
expected but was
> > <"is too short (minimum is 4 characters)">.
>
> > 10 tests, 31 assertions, 1 failures, 0 errors
>
> > The deprecation warning I get but it doesn''t appear as though
the
> > error message is being manipulated correctly; any help out there?
>
> I am getting the same problem
>
> The deprecation warning is easy
>
> in your user_test.rb setup method replace the line:
> @error_messages = ActiveRecord::Errors.default_error_messages
> with the line:
> @error_messages =
I18n.translate(''activerecord.errors.messages'')
>
> This is part of the internationalization of rails.
>
> I still haven''t tracked down why sprintf wants a variable named
count
> instead of just taking the variable in min_length.
> For now I have performed the hack of commenting out the original line
> and adding a hand formatted line for the two min_length tests:
>
> #correct_error_message = sprintf(@error_messages[:too_short],
> min_length)
> correct_error_message = "is too short (minimum is #{min_length}
> characters)"
>
> and replace the three max_length tests:
>
> #correct_error_message = sprintf(@error_messages[:too_long],
> max_length)
> correct_error_message = "is too long (maximum is #{max_length}
> characters)"
>
> I would prefer to use the sprintf to format the message from
> the :too_short symbol. It should change automatically if the
> default :too_short message changes. I''ll live with the hack for
now
> and chase down the change in sprintf in my spare time.
>
> I''ll try to remeber to post the sprintf answer when i find it.
>
> Sean
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---