0

Мое приложение работает в разработке, но когда я пытаюсь запустить мое приложение в производстве (Heroku) Я получаю следующее сообщение об ошибке:Heroku ошибка с DEViSE invitable

/app/app/controllers/tenant/invitations_controller.rb : 1: в ` ': неинициализированные постоянные Арендаторы (NameError)

похоже, что это связано с DEViSE Invitable (который я недавно установлен), и мое приложение настроено, чтобы позволить менеджерам пригласить Арендаторы

Арендатор Модель

class Tenant < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :invitable, :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable, :invite_for => 2.weeks 

end 

пригласительные контроллер (находится в моей папке квартиросъемщиков)

class Tenants::InvitationsController < Devise::InvitationsController 

    def new 
    super 
    end   

    def create 
    super 
    end 

end 

менеджер Модель

class Manager < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    include DeviseInvitable::Inviter 

    belongs_to :property 
    belongs_to :maintenance_team 

    has_and_belongs_to_many :tenants 
    has_many :invitations, :class_name => 'Tenant', :as => :invited_by 
end 

маршруты

devise_for :tenants, controllers: { registrations: "tenant/registrations", :invitations => 'devise/invitations'} 
    devise_for :managers, controllers: { sessions: "manager/sessions", registrations: "manager/registrations"} 

Некоторые журналы Heroku

2016-07-15T04:50:53.147334+00:00 app[web.1]: => Rails 4.2.5 application starting in production on http://0.0.0.0:51919 
2016-07-15T04:50:53.147345+00:00 app[web.1]: => Run `rails server -h` for more startup options 
2016-07-15T04:50:53.147345+00:00 app[web.1]: => Ctrl-C to shutdown server 
2016-07-15T04:50:53.147352+00:00 app[web.1]: Exiting 
2016-07-15T04:50:53.147312+00:00 app[web.1]: => Booting WEBrick 
2016-07-15T04:50:53.147366+00:00 app[web.1]: /app/app/controllers/tenant/invitations_controller.rb:1:in `<top (required)>': uninitialized constant Tenants (NameError) 

. Конфигурация производства

Rails.application.configure do 
    # Settings specified here will take precedence over those in config/application.rb. 

    # Code is not reloaded between requests. 
    config.cache_classes = true 

    # Eager load code on boot. This eager loads most of Rails and 
    # your application in memory, allowing both threaded web servers 
    # and those relying on copy on write to perform better. 
    # Rake tasks automatically ignore this option for performance. 
    config.eager_load = true 

    # Full error reports are disabled and caching is turned on. 
    config.consider_all_requests_local  = false 
    config.action_controller.perform_caching = true 

    # Enable Rack::Cache to put a simple HTTP cache in front of your application 
    # Add `rack-cache` to your Gemfile before enabling this. 
    # For large-scale production use, consider using a caching reverse proxy like 
    # NGINX, varnish or squid. 
    # config.action_dispatch.rack_cache = true 

    # Disable serving static files from the `/public` folder by default since 
    # Apache or NGINX already handles this. 
    config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present? 

    # Compress JavaScripts and CSS. 
    config.assets.js_compressor = :uglifier 
    # config.assets.css_compressor = :sass 

    # Do not fallback to assets pipeline if a precompiled asset is missed. 
    config.assets.compile = false 

    # Asset digests allow you to set far-future HTTP expiration dates on all assets, 
    # yet still be able to expire them through the digest params. 
    config.assets.digest = true 

    # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb 

    # Specifies the header that your server uses for sending files. 
    # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache 
    # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX 

    # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. 
    # config.force_ssl = true 

    # Use the lowest log level to ensure availability of diagnostic information 
    # when problems arise. 
    config.log_level = :debug 

    # Prepend all log lines with the following tags. 
    # config.log_tags = [ :subdomain, :uuid ] 

    # Use a different logger for distributed setups. 
    # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new) 

    # Use a different cache store in production. 
    # config.cache_store = :mem_cache_store 

    # Enable serving of images, stylesheets, and JavaScripts from an asset server. 
    # config.action_controller.asset_host = 'http://assets.example.com' 

    # Ignore bad email addresses and do not raise email delivery errors. 
    # Set this to true and configure the email server for immediate delivery to raise delivery errors. 
    config.action_mailer.raise_delivery_errors = true 

    # Enable locale fallbacks for I18n (makes lookups for any locale fall back to 
    # the I18n.default_locale when a translation cannot be found). 
    config.i18n.fallbacks = true 

    # Send deprecation notices to registered listeners. 
    config.active_support.deprecation = :notify 

    # Use default logging formatter so that PID and timestamp are not suppressed. 
    config.log_formatter = ::Logger::Formatter.new 

    # Do not dump schema after migrations. 
    config.active_record.dump_schema_after_migration = false 

config.action_mailer.delivery_method = :smtp 

host = 'project-apple.herokuapp.com' 
config.action_mailer.default_url_options = { host: host } 

ActionMailer::Base.smtp_settings = { 
    :address => 'smtp.sendgrid.net', 
    :port => '587', 
    :authentication => :plain, 
    :user_name => ENV['SENDGRID_USERNAME'], 
    :password => ENV['SENDGRID_PASSWORD'], 
    :domain => 'heroku.com', 
    :enable_starttls_auto => true 
} 


end 
+0

Вы можете вставить свой config/routes.rb здесь? а также некоторые журналы ошибок? – power

+0

только что добавил, спасибо! –

+0

Вы заметили, что журналы содержат «/app/app/controllers/tenant/invitations_controller.rb». Мне интересно, почему есть два приложения/приложения? – power

ответ

2

попробуйте изменить маршруты к этому.

devise_for :tenants, controllers: { registrations: "tenant/registrations", :invitations => 'tenant/invitations'} 
+0

это не сработало. Также, когда я делаю это, я получаю аналогичную ошибку в разработке: ActionController :: RoutingError (неинициализированные постоянные арендаторы): приложение/контроллеры/арендатор/invitations_controller.rb: 1: in ' ' –

+0

Это решение действительно сработало ! Но мне нужно было изменить мой контроллер приглашений: 'class Tenant :: InvitationsController

+1

Возможно, вы можете изменить маршрут на: invitations => 'арендаторы/приглашения', это укажет на Tenants :: InvitationsController. Я просто использую то же самое, что и регистрацию, которая была там раньше. – power