0

Just tried deploying one of my first apps via heroku. Everything is connected but for some reason, the application will not show up, leaving the default one. I've installed logs, but the errors that they track are on pages I haven't even accessed (or know how to access for that matter). The only error I was able to change in this block was syntax error on the application page

/app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:78:in `require': /app/config/application.rb:9: class/module name must be CONSTANT (SyntaxError) from /app/vendor/bundle/ruby/2.0.0/gems/railties-
4.2.0/lib/rails/commands/commands_tasks.rb:78:in `block in server' from /app/vendor/bundle/ruby/2.0.0/gems/railties-
4.2.0/lib/rails/commands/commands_tasks.rb:75:in `tap' from 
/app/vendor/bundle/ruby/2.0.0/gems/railties-
4.2.0/lib/rails/commands/commands_tasks.rb:75:in `server' from /app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:39:in `run_command!' from /app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.0/lib/rails/commands.rb:17:in 
`<top (required)>' from bin/rails:8:in `require' from bin/rails:8:in `<main>' 

My controllers can be found below Application Controller

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception
end

Listing Controller

class ListingsController < ApplicationController
  before_action :set_listing, only: [:show, :edit, :update, :destroy]

  # GET /listings
  # GET /listings.json
  def index
    @listings = Listing.all
  end

  # GET /listings/1
  # GET /listings/1.json
  def show
  end

  # GET /listings/new
  def new
    @listing = Listing.new
  end

  # GET /listings/1/edit
  def edit
  end

  # POST /listings
  # POST /listings.json
  def create
    @listing = Listing.new(listing_params)

    respond_to do |format|
      if @listing.save
        format.html { redirect_to @listing, notice: 'Listing was successfully created.' }
        format.json { render :show, status: :created, location: @listing }
      else
        format.html { render :new }
        format.json { render json: @listing.errors, status: :unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /listings/1
  # PATCH/PUT /listings/1.json
  def update
    respond_to do |format|
      if @listing.update(listing_params)
        format.html { redirect_to @listing, notice: 'Listing was successfully updated.' }
        format.json { render :show, status: :ok, location: @listing }
      else
        format.html { render :edit }
        format.json { render json: @listing.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /listings/1
  # DELETE /listings/1.json
  def destroy
    @listing.destroy
    respond_to do |format|
      format.html { redirect_to listings_url, notice: 'Listing was successfully destroyed.' }
      format.json { head :no_content }
    end
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_listing
      @listing = Listing.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def listing_params
      params.require(:listing).permit(:name, :description, :price, :image)
    end
end

Application.rb

require File.expand_path('../boot', __FILE__)

require 'rails/all'

# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)

module etsy_demo
  class Application < Rails::Application
    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration should go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded.

    # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
    # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
    # config.time_zone = 'Central Time (US & Canada)'

    # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
    # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
    # config.i18n.default_locale = :de

    # Do not swallow errors in after_commit/after_rollback callbacks.
    config.active_record.raise_in_transactional_callbacks = true
  end
end

Update I get this error after changing it back to Etsy-Demo

/app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/railtie/configuration.rb:95:in `method_missing': undefined method `active_record' for #<Rails::Application::Configuration:0x007f8c37d4abf0> (NoMethodError) from /app/config/application.rb:24:in `<class:Application>' from /app/config/application.rb:10:in `<module:EtsyDemo>' from /app/config/application.rb:9:in `<top (required)>' from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:78:in `require' from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:78:in `block in server' from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:75:in `tap' from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:75:in `server' from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:39:in `run_command!' from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/commands.rb:17:in `<top (required)>' from bin/rails:8:in `require' from bin/rails:8:in `<main>'

New Error /app/config/application.rb:5:in require': cannot load such file -- active_record/railtie (LoadError) from /app/config/application.rb:5:in' from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:78:in require' from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:78:inblock in server' from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:75:in tap' from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:75:inserver' from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:39:in run_command!' from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.0/lib/rails/commands.rb:17:in' from bin/rails:8:in require' from bin/rails:8:in' Exception » 09:07:51.127

Solution

My problem was due to my Gemfile being unorganized. I had many parts of my app only work in development or for whole app when they needed to be arranged. I've attached the my new Gemfile below

source 'https://rubygems.org'

ruby '2.2.0'


gem 'rails', '4.2.0'
# Use sqlite3 as the database for Active Record

# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.1.0'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
gem 'bootstrap-sass', '~> 3.1.1.0'
gem "paperclip", "~> 4.2"

# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc


# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Unicorn as the app server
# gem 'unicorn'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug'
  gem 'sqlite3'
  # Access an IRB console on exception pages or by using <%= console %> in views
  gem 'web-console', '~> 2.0'

  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
end


group :production do
  gem 'pg'
  gem 'rails_12factor'
end

1 Answers1

0

I believe the issue is that one of your controllers/models has a class name which is not capitalized correctly.

Go check your models/controllers have the correct capitalisation e.g.

class YourController < ApplicationController
end

instead of

class yourcontroller < ApplicationController
end

Then re-deploy.

Update:

Try changing module etsy_demo in config/Application.rb to:

module EtsyDemo

Update no. 2:

Add to config/Application.rb:

require 'rails/all'
require "active_record/railtie"

or comment out:

config.active_record.raise_in_transactional_callbacks = true
patrick
  • 9,837
  • 3
  • 20
  • 27
  • Thx for the response, but my application is below and doesn't have my app's name. Could it still be wrong?
    [code]class ApplicationController < ActionController::Base # Prevent CSRF attacks by raising an exception. # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exception end[/code]
    – David Johnson Mar 04 '15 at 01:43
  • Sorry, I misunderstood your comment. Change that back the way it was. Your original question must be related to a controller or model syntax name being incorrect. Update your original question with some steps you've taken. Perhaps even copy the controller/model statement as per my answer. – patrick Mar 04 '15 at 01:55
  • I've added the other controllers, let me know what you think – David Johnson Mar 04 '15 at 02:34
  • Updated the question, appreciate the patience – David Johnson Mar 04 '15 at 03:59
  • You can't have hyphens in the class and module names. It can't be Etsy-Demo it has to be EtsyDemo. – patrick Mar 04 '15 at 04:03
  • added the requirements, still nothing. Any other suggestions based off the new error^ – David Johnson Mar 04 '15 at 14:27
  • Can you please check that you have `gem 'rails'` or similar in your Gemfile? – patrick Mar 04 '15 at 22:49
  • 1
    I realized the Gemfile was out of whack, thank you for your help – David Johnson Mar 06 '15 at 22:55