1

Alchemy CMS と連携する Rails 4.1 アプリケーションを開発しています。管理部分で Alchemy の管理インターフェースを使用したくありません。(私は ZURB Foundation で独自に構築しています。)

RSpec で独自の仕様を実行したいときに、問題が発生し始めます。アプリケーションは開発モードで正常に動作しますが、テストで次のエラーが発生します。

Failure/Error: visit new_staff_program_path
     Alchemy::DefaultLanguageNotFoundError:
       No default language found. Have you run the rake alchemy:db:seed task?

コントローラーは、データが適切に配置されることを期待するいくつかのフィルターを実行しているようです。アプリケーションの特定の部分について、これを「オプトアウト」する方法はありますか?

今のところ、これが私の解決策です...

別の管理者が拡張しているベースコントローラーがあります。before_actionその中で、Alchemy エンジンがコントローラー レイヤーに追加する呼び出しをスキップするように指示します。

class Staff::Base < ApplicationController
  # Filters
  skip_before_action :set_current_alchemy_site, :set_alchemy_language

  # Layout
  layout 'admin'
end

誰かがより良い解決策を持っている場合は、私に知らせてください。

4

2 に答える 2

0

そして力ずくの方法:

# 'spec/support/alchemy_stub'    
# Make tests run faster by stubbing Alchemy controller before actions

module Alchemy
  module ControllerActions
    def set_current_alchemy_site
    end
    def set_alchemy_language
    end
  end
end

spec/support のすべてを自動要求しない場合は、spec_helper でそれを要求します

# spec/spec_helper.rb
require 'support/alchemy_stub'
于 2014-12-30T11:30:10.497 に答える