The book is out of date. Seriously out of date, in fact. (built on Rails 1.2.3) So much has changed since then that I'd recommend getting almost *anything* more modern.
You should replace the call to "require 'acts_as_ferret'" to a config.gem statement, much like the one for mislav-will_paginate that you've already got. You can also remove the "require 'will_paginate'" part, as the config.gem statement does it for you. Finally, the current best practice for setting constants is to put them in a file in config/initializers. Once again, I can't over-stress the need to get a more modern reference for learning Rails. While the online source code has been somewhat updated, here's a short list (took less than 5 minutes) of issues: - views as .rhtml rather than .html.erb - old-style tests in many places (derived from Test::Unit::TestCase, vs ActiveSupport::TestCase and friends); these will fail now - spends a lot of time rolling its own authentication system; your time would be better spent picking a good plugin - also rolls its own file upload - very few named routes --Matt Jones On Jun 24, 4:15 pm, Learn by Doing <[email protected]> wrote: > Please help me figure out whether to put the application configuration > below inside or outside of the Rails::Initializer in environment.rb. > The application runs regardless of the position of the application > configuration. However, a unit test fails if the application > configuration is outside the block but will pass if the configuration is > inside the block. Below are the code. > > environment.rb: > Code : - fold - unfold > > 1. RAILS_GEM_VERSION = '2.3.2' unless defined? RAILS_GEM_VERSION > 2. require File.join(File.dirname(__FILE__), 'boot') > 3. > 4. Rails::Initializer.run do |config| > 5. > 6. config.action_controller.session_store = :active_record_store > 7. > 8. config.gem 'mislav-will_paginate', :version => '~> 2.3.8', :lib > => 'will_paginate', > 9. :source => 'http://gems.github.com' > 10. > 11. end > 12. > 13. # Include your application configuration below > 14. require 'acts_as_ferret' > 15. require 'will_paginate' > 16. > 17. DB_STRING_MAX_LENGTH = 255 > 18. DB_TEXT_MAX_LENGTH = 40000 > 19. HTML_TEXT_FIELD_SIZE = 15 > > test_helper: > Code : - fold - unfold > > 1. ENV["RAILS_ENV"] = "test" > 2. require File.expand_path(File.dirname(__FILE__) + > "/../config/environment") > 3. require 'test_help' > 4. > 5. class ActiveSupport::TestCase > 6. ... > 7. end > > faq_test.rb: > Code : - fold - unfold > > 1. require File.dirname(__FILE__) + '/../test_helper' > 2. > 3. class FaqTest < ActiveSupport::TestCase > 4. fixtures :faqs > 5. > 6. def setup > 7. @valid_faq = faqs(:valid_faq) > 8. end > 9. > 10. def test_max_lengths > 11. Faq::QUESTIONS.each do |question| > 12. assert_length :max, @valid_faq, question, DB_TEXT_MAX_LENGTH > 13. end > 14. end > 15. end > > faq.rb: > Code : - fold - unfold > > 1. class Faq < ActiveRecord::Base > 2. belongs_to :user > 3. acts_as_ferret > 4. > 5. QUESTIONS = %w(bio skillz schools companies > 6. music movies television books magazines) > 7. # A constant for everything except the bio > 8. FAVORITES = QUESTIONS - %w(bio) > 9. TEXT_ROWS = 10 > 10. TEXT_COLS = 40 > 11. > 12. validates_length_of QUESTIONS, > 13. :maximum => DB_TEXT_MAX_LENGTH > 14. > 15. def initialize > 16. super > 17. QUESTIONS.each do |question| > 18. self[question] = "" > 19. end > 20. end > 21. end > > When I run the unit test, with the application configuration outside the > initializer block as above, I get the error that none of the variable > outside the block is defined. If I move the "require" lines inside the > block, the error will say that the constants are not defined, etc. (The > line numbers in the error messages below may not be the same as the code > line numbers above): > > Code : - fold - unfold > > 1. ibookG4:rails_space Beo$ rake test:units > 2. (in /Users/Beo/Documents/Mesh/rails_space) > 3. /opt/local/bin/ruby -I"lib:test" > "/opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" > "test/unit/faq_test.rb" "test/unit/helpers/community_helper_test.rb" > "test/unit/helpers/faq_helper_test.rb" > "test/unit/helpers/profile_helper_test.rb" > "test/unit/helpers/site_helper_test.rb" > "test/unit/helpers/spec_helper_test.rb" > "test/unit/helpers/user_helper_test.rb" "test/unit/spec_test.rb" > "test/unit/user_test.rb" > 4. > /opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/base > .rb:1964:in > `method_missing_without_paginate': undefined local variable or method > `acts_as_ferret' for #<Class:0x1a52430> (NameError) > 5. from > /opt/local/lib/ruby/gems/1.8/gems/mislav-will_paginate-2.3.11/lib/will_pagi > nate/finder.rb:170:in > `method_missing' > 6. from /Users/Beo/Documents/Mesh/rails_space/app/models/faq.rb:3 > 7. from > /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in > `gem_original_require' > 8. from > /opt/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in > `require' > 9. from > /opt/local/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/de > pendencies.rb:158:in > `require' > 10. from > /opt/local/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/de > pendencies.rb:265:in > `require_or_load' > 11. from > /opt/local/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/de > pendencies.rb:224:in > `depend_on' > 12. from > /opt/local/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/de > pendencies.rb:136:in > `require_dependency' > 13. from > /opt/local/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:393:in > `load_application_classes' > 14. from > /opt/local/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:392:in > `each' > 15. from > /opt/local/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:392:in > `load_application_classes' > 16. from > /opt/local/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:390:in > `each' > 17. from > /opt/local/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:390:in > `load_application_classes' > 18. from > /opt/local/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:195:in > `process' > 19. from > /opt/local/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:113:in > `send' > 20. from > /opt/local/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:113:in > `run' > 21. from > /Users/Beo/Documents/Mesh/rails_space/config/environment.rb:9 > 22. from ./test/unit/../test_helper.rb:2:in `require' > 23. from ./test/unit/../test_helper.rb:2 > 24. from ./test/unit/faq_test.rb:1:in `require' > 25. from ./test/unit/faq_test.rb:1 > 26. from > /opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5 > :in > `load' > 27. from > /opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5 > 28. from > /opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5 > :in > `each' > 29. from > /opt/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5 > 30. rake aborted! > 31. Command failed with status (1): [/opt/local/bin/ruby -I"lib:test" > "/opt/loc...] > 32. > 33. (See full trace by running task with --trace) > > I am running the following gems. My plugins folder is empty: > > Code : - fold - unfold > > 1. ibookG4:rails_space Beo$ gem list > 2. > 3. *** LOCAL GEMS *** > 4. > 5. actionmailer (2.3.2) > 6. actionpack (2.3.2) > 7. activerecord (2.3.2) > 8. activeresource (2.3.2) > 9. activesupport (2.3.2) > 10. acts_as_ferret (0.4.4) > 11. ferret (0.11.6) > 12. mislav-will_paginate (2.3.11) > 13. mysql (2.7) > 14. rails (2.3.2) > 15. rake (0.8.7) > 16. rubygems-update (1.3.3) > > You may say that I should just move them all inside the block and be > done with it. After all, the application runs fine with those inside > the block. However, according to the book "RailsSpace" that I am > following, those app config should be outside the block. I've read also > that the require lines for acts_as_ferret and will_paginate should be > outside the block. I am afraid that if I leave them inside the block, I > may have some problems down the road. Please help. Thanks. > -- > Posted viahttp://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ 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 [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---

