2016-08-05 7 views
0

Я только что сделал новое приложение для рельсов 5.0.0. Все работает работяга доры, пока я не решил прекомпилировать активы Heroku:Rake error insist У меня есть роль пользователя, которая является моим именем приложения?

RAILS_ENV=production bundle exec rake assets:precompile 

Затем я вижу эту ошибку. Я не знаю, почему он хочет, чтобы роль была моим именем приложения? Я прекомпиляции до этого момента. Добавлено только два файла миграции (перечисленные ниже).

rake aborted! 
    ActiveRecord::NoDatabaseError: FATAL: role "MYAPPNAME" does not exist 
    /Users/james/MyApps/MYAPPNAME/app/models/model.rb:6:in `get_percent_change' 
    /Users/james/MyApps/MYAPPNAME/lib/tasks/trade_wave_tasks.rake:3:in `block in <top (required)>' 
    /Users/james/MyApps/MYAPPNAME/config/application.rb:12:in `<class:Application>' 
    /Users/james/MyApps/MYAPPNAME/config/application.rb:10:in `<module:MYAPPNAME>' 
    /Users/james/MyApps/MYAPPNAME/config/application.rb:9:in `<top (required)>' 
    /Users/james/MyApps/MYAPPNAME/Rakefile:4:in `require_relative' 
    /Users/james/MyApps/MYAPPNAME/Rakefile:4:in `<top (required)>' 
    /Users/james/.rbenv/versions/2.3.1/bin/bundle:23:in `load' 
    /Users/james/.rbenv/versions/2.3.1/bin/bundle:23:in `<main>' 
    PG::ConnectionBad: FATAL: role "MYAPPNAME" does not exist 
    /Users/james/MyApps/MYAPPNAME/app/models/model.rb:6:in `get_percent_change' 
    /Users/james/MyApps/MYAPPNAME/lib/tasks/trade_wave_tasks.rake:3:in `block in <top (required)>' 
    /Users/james/MyApps/MYAPPNAME/config/application.rb:12:in `<class:Application>' 
    /Users/james/MyApps/MYAPPNAME/config/application.rb:10:in `<module:MYAPPNAME>' 
    /Users/james/MyApps/MYAPPNAME/config/application.rb:9:in `<top (required)>' 
    /Users/james/MyApps/MYAPPNAME/Rakefile:4:in `require_relative' 
    /Users/james/MyApps/MYAPPNAME/Rakefile:4:in `<top (required)>' 
    /Users/james/.rbenv/versions/2.3.1/bin/bundle:23:in `load' 
    /Users/james/.rbenv/versions/2.3.1/bin/bundle:23:in `<main>' 
    Tasks: TOP => get_percent_change 
    (See full trace by running task with --trace) 

Первоначально любая команда рейка давала мне проблему. Я исправил эти проблемы и выполнил все команды rake - кроме этого! (т. е. rake db: reset) Я также создал postgresql USER и ROLE, но он все еще говорит о той же ошибке. Я перезапускаю psql, а rake db: reset.

Вот миграции файлов:

Создана модель:

class CreateMyModel < ActiveRecord::Migration[5.0] 
    def change 
    create_my_model :models do |t| 

     t.timestamps 
    end 
    end 
end 

Добавлен: Колонка:

class AddPercentChangeToMyModelTable < ActiveRecord::Migration[5.0] 
    def change 
    remove_column :my_models, :percent_change, :string 
    add_column :my_models, :percent_change, :string 
    end 
end 

Изменено его поплавком:

class ChangePercentChangeToFloatOnMyModelTable < ActiveRecord::Migration[5.0] 
    def change 
    add_column :my_models, :percent_change, :float, precision: 8 
    end 
end 

I 'm также используется всякий раз, когда g эм поэтому у меня есть работа грабель (находится в задачах/my_rake_job.rake)

desc 'get latest percent change' 
task get_percent_change: :environment do 
    MyModel.get_percent_change 
end 

А вот моя схема:

create_table "bots", force: :cascade do |t| 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    end 

    create_table "mymodels", force: :cascade do |t| 
    t.datetime "created_at",  null: false 
    t.datetime "updated_at",  null: false 
    t.float "percent_change" 
    end 

    create_table "tweets", force: :cascade do |t| 
    t.string "message" 
    t.string "string" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    end 

Config/базе данных

# PostgreSQL. Versions 9.1 and up are supported. 
    pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 

development: 
    <<: *default 
    database: MYAPP_development 

test: 
    <<: *default 
    database: MYAPP_test 

production: 
    <<: *default 
    database: MYAPP_production 
    username: MYAPP 
    password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %> 

И мой файл драгоценного камня :

source 'https://rubygems.org' 


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 
gem 'rails', '~> 5.0.0' 
# Use postgresql as the database for Active Record 
gem 'pg', '~> 0.18' 
# Use Puma as the app server 
gem 'puma', '~> 3.0' 
# 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.2' 
# See https://github.com/rails/execjs#readme for more supported runtimes 
# gem 'therubyracer', platforms: :ruby 

gem 'twitter' 
gem 'figaro' 
gem 'randumb' 
gem 'whenever', :require => false 
gem "stock_quote" 

# Use jquery as the JavaScript library 
gem 'jquery-rails' 
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks 
gem 'turbolinks', '~> 5' 
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder 
gem 'jbuilder', '~> 2.5' 
# Use Redis adapter to run Action Cable in production 
# gem 'redis', '~> 3.0' 
# Use ActiveModel has_secure_password 
# gem 'bcrypt', '~> 3.1.7' 

# 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', platform: :mri 
end 

group :development do 
    # Access an IRB console on exception pages or by using <%= console %> anywhere in the code. 
    gem 'web-console' 
    gem 'listen', '~> 3.0.5' 
    # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring 
    gem 'spring' 
    gem 'spring-watcher-listen', '~> 2.0.0' 
end 

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem 
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] 

После снятия роли и вновь сделать это мой PSQL \ дю таблица выглядит следующим образом:

ccap  | Superuser, Create DB          | {} 

Пожалуйста, дайте мне знать, что другие файлы, необходимые для отладки.

+0

Что вы имеете внутри 'конфигурации/database.yml' файл? –

+0

Просто добавил к вопросу – user3390658

ответ

0

Эта проблема связан с методом, который я звоню в моих граблях

desc 'get latest percent change' 
task get_percent_change: :environment do 
    MyModel.get_percent_change 
end 

разработать более подробно об этом, это реках задача вызова методы модели, которая пытается создать что-то. Вместо того, чтобы создать что-то грабли называемого методом модели, что метод возвращал поплавок, а затем работа грабель сделали что-то вроде этого:

current_percent = Model.get_percent_change 
    new_data = Model.new 
    new_data.percent_change = current_percent 
    new_data.save 

При нажатии на Heroku, потому что я пытался изменить имя столбца, это решение очень полезно: How do I change column type in Heroku?

class ModifyContacts < ActiveRecord::Migration 
    def self.up 
    rename_column :contacts, :date_entered, :date_entered_string 
    add_column :contacts, :date_entered, :date 

    Contact.reset_column_information 
    Contact.find(:all).each { |contact| contact.update_attribute(:date_entered, contact.date_entered_string) } 
    remove_column :contacts, :date_entered_string 
    end 
end