去年、プラグイン を作成し、最新の Discourse バージョンでも動作するか確認したいと考えていました。開発環境を再初期化(データベースのマイグレーションの問題があったため)したところ、手動でプラグインが正常に動作することを確認できました。しかし、昨年作成した際にも通っていた仕様テストを実行すると、以下のエラーが発生します。
Failure/Error: DB.test_transaction = ActiveRecord::Base.connection.current_transaction
NoMethodError:
undefined method `test_transaction=' for #<MiniSqlMultisiteConnection:0x00007fb8b3815c40>
また、ローカル環境に Discourse Footnote をインストールしていた場合も、同様のエラーが発生します。
現在の Discourse バージョンでテストが通過するように、環境やテストの修正方法を教えていただけますでしょうか。
tgxworld
(Alan Tan)
2
テストを実行するためにどのコマンドを使用しましたか?
riking
(Kane York)
3
discourse ソースディレクトリから bin/rspec を実行する際は、plugins/ フォルダからプラグインリポジトリをシンボリックリンクしている場合でも、LOAD_PLUGINS=1 を含めるようにしてください。
discourse ディレクトリから以下のコマンドを実行しています:
d/rake plugin:spec['discourse-ruby']
@riking LOAD_PLUGINS=1 を明示的に含めていませんが、それが自動的に設定されているようです(plugin:spec を実行しているためと思われます)。コマンド実行後の最初の行は以下の通りです:
LOAD_PLUGINS=1 /usr/local/bin/ruby -S rspec ./plugins/discourse-ruby/spec/markdown_ruby_spec.rb --profile
以下のように明示的に含めても、同じエラーが発生します:
d/rake plugin:spec['discourse-ruby'] LOAD_PLUGINS=1
tgxworld
(Alan Tan)
5
d/rake スクリプトはデフォルトで development 環境を指定するため、代わりに以下を実行する必要があります:RAILS_ENV=test d/rake plugin:spec['discourse-ruby']