SettingsLogic не работает при запуске модульных тестов в Rails 2.3 - PullRequest
1 голос
/ 21 марта 2011

Я получаю эту ошибку при запуске некоторых модульных тестов (с использованием модуля Test :: Unit, включенного в Ruby / Rails), которые вызывают метод, использующий некоторую функцию SettingsLogic:

RuntimeError: Вызывается id для nil, который по ошибке будет равен 4 - если вы действительно хотите id nil, используйте object_id

Более конкретно, я написал некоторый модульный тест для проверки некоторыхметоды в моих моделях.Эти методы используют функцию SettingsLogic, но кажется, что здесь что-то не так.Я запустил тестовую консоль и проверил, что класс Settings определен.Однако я не могу получить доступ к хэшу моего значения настроек.

script/console test
Loading test environment (Rails 2.3.10)
DEPRECATION WARNING: require "activesupport" is deprecated and will be removed in Rails 3. Use require "active_support" instead. (called from /var/lib/gems/1.8/gems/activesupport-2.3.10/lib/activesupport.rb:2)
>> Settings
=> Settings
>> Settings.blah
RuntimeError: Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
    from (erb):32
>> exit

В то время как в среде разработки я получаю:

script/console
Loading development environment (Rails 2.3.10)
>> Settings
=> Settings
>> Settings.blah
=> {"gadget_type"=>{"alarm_history_table"=>{"max_printable_rows"=>200, "max_visible_rows"=>14, "_id"=>5, "rows_per_page"=>100}, "text"=>{"_id"=>2}, "current_state_table"=>{"max_printable_rows"=>200, "max_visible_rows"=>14, "_id"=>1, "rows_per_page"=>10}, "column_based_history_table"=>{"max_printable_rows"=>200, "max_visible_rows"=>14, "_id"=>6, "rows_per_page"=>100, "related_states"=>{"unit"=>17, "description"=>49}}, "entity_history_table"=>{"max_printable_rows"=>200, "max_visible_rows"=>14, "_id"=>4, "rows_per_page"=>100}, "chart"=>{"_id"=>3}, "access_type"=>{"url"=>1, "file"=>2}}}
>> exit

Я запускаю тесты вручную, то есть не с помощью rake test, а с ruby unit/my_model_test.rb

Модель settings.rb выглядит следующим образом:

class Settings < Settingslogic
  source "#{Rails.root}/config/application.yml"
  namespace Rails.env
end

и файл настроек application.yml:

defaults: &defaults
  blah:
    gadget_type:
      access_type:
        url: 1
        file: 2
      current_state_table:
        _id: 1
        max_visible_rows: 14
        rows_per_page: 10
        max_printable_rows: 200
      text:
        _id: 2
      chart:
        _id: 3
      entity_history_table:
        _id: 4
        max_visible_rows: 14
        rows_per_page: 100
        max_printable_rows: 200
      alarm_history_table:
        _id: 5
        max_visible_rows: 14
        rows_per_page: 100
        max_printable_rows: 200
      column_based_history_table:
        _id: 6
        max_visible_rows: 14
        rows_per_page: 100
        max_printable_rows: 200
        related_states:
          description: <%= Property.find_by_name('description').id %>
          unit:  <%= Property.find_by_name('units').id %>

development:
  <<: *defaults

test:
  <<: *defaults

production:
  <<: *defaults

RUBY VERSION: ruby ​​1.8.7 (2010-06-23 patchlevel 299) [i686-linux]
ВЕРСИЯ РЕЙЛОВ: 2.3.10
ЛОГИКА НАСТРОЕК: 2.0.6
Спасибо!

1 Ответ

0 голосов
/ 30 марта 2011

FIXED

Проблема была во встроенном рубине в yaml:

Property.find_by_name('description').id

У меня не было свойств, поэтому по этой причине он не получился.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...