Например, у меня есть этот гем под названием Authlogic-openid, этот плагин устарел, больше не поддерживается и сломан (дайте мне знать, если вы знаете какую-либо альтернативу).
Я хотел убедиться, что тест выполняется, нажав Ctrl + R на vendor / gems / authlogic-oid-1.0.4 / test / acts_as_authentic_test.rb
[Пожалуйста, не пытайтесь попробовать мои шаги ниже, сам драгоценный камень уже был разбит на части, поэтому мне пришлось раньше исправить некоторые пути и необходимые библиотеки ... просто представьте их в своей голове]
Сначала он вернулся
LoadError: no such file to load — ruby-debug
Итак, я прокомментировал строку # 3 в test_helper.rb, которая гласит:
require "ruby-debug"
затем я установил гем ruby-debug с помощью
gem install ruby-debug
Затем я добавил это в environment.rb
config.gem 'ruby-debug'
Вопрос № 1: Правильны ли мои шаги выше, чтобы начать мой квест отладки Gem?
Хорошо, теперь строка, которую я хотел отладить, находится в строке vendor / gems / authlogic-oid-1.0.4 / lib / authlogic_openid / acts_as_authentic.rb # 157 (или вокруг нее), которая гласит:
session_class.controller.params[:open_id_complete] && session_class.controller.params[:for_model]
Итак, я набрал "отладчик" поверх него, теперь он читает:
debugger
session_class.controller.params[:open_id_complete] && session_class.controller.params[:for_model]
Затем, когда я снова нажал Ctrl + R на vendor / gems / authlogic-oid-1.0.4 / test / acts_as_authentic_test.rb, я получил такой вывод:
DEPRECATION WARNING: Please update config/database.yml to use 'database' instead of 'dbfile'. (called from parse_sqlite_config! at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/connection_adapters/sqlite_adapter.rb:35)
Loaded suite /Volumes/Data/work/ror/user_manager/vendor/gems/authlogic-oid-1.0.4/test/acts_as_authentic_test
Started
E
Finished in 0.009325 seconds.
1) Error:
test_password_not_required_on_create(ActsAsAuthenticTest):
NoMethodError: undefined method `logger' for true:TrueClass
method debugger in debugger.rb at line 6
method openid_complete? in acts_as_authentic.rb at line 157
method authenticate_with_openid in acts_as_authentic.rb at line 83
method save in acts_as_authentic.rb at line 73
method test_password_not_required_on_create in acts_as_authentic_test.rb at line 16
method __send__ in setup_and_teardown.rb at line 62
method run in setup_and_teardown.rb at line 62
1 tests, 0 assertions, 0 failures, 1 errors
Вопрос № 2: Правильны ли мои шаги для отладки кода? Почему я получил ошибку неопределенного метода 'logger'?
Бонусный вопрос: почему я получаю это предупреждение об устаревании? Как это исправить?
Мой файл database.yml выглядит следующим образом:
# MySQL. Versions 4.1 and 5.0 are recommended.
#
# Install the MySQL driver:
# gem install mysql
# On Mac OS X:
# sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql
# On Mac OS X Leopard:
# sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
# This sets the ARCHFLAGS environment variable to your native architecture
# On Windows:
# gem install mysql
# Choose the win32 build.
# Install MySQL and put its /bin directory on your path.
#
# And be sure to use new-style password hashing:
# http://dev.mysql.com/doc/refman/5.0/en/old-client.html
development:
adapter: mysql
encoding: utf8
reconnect: false
database: user_manager_development
pool: 5
username: root
password: oisadj
socket: /tmp/mysql.sock
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: mysql
encoding: utf8
reconnect: false
database: user_manager_test
pool: 5
username: root
password: oisadj
socket: /tmp/mysql.sock
production:
adapter: mysql
encoding: utf8
reconnect: false
database: user_manager_production
pool: 5
username: root
password:
socket: /tmp/mysql.sock
Спасибо!