Добавление Postgresql в существующий проект Rails - PullRequest
0 голосов
/ 28 марта 2019

Я следую этому руководству, https://devcenter.heroku.com/articles/getting-started-with-rails5. Я вынимаю гем 'sqlite3' и добавляю 'pg', затем запускаю пакетную установку. Затем я изменяю свой файл config / database.yml, чтобы он выглядел следующим образом

конфиг / database.yml

default: &default
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default
  database: myapp5_development

test:
  <<: *default
  database: myapp5_test

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

Для следующей части, руководство дает мне два варианта, и я попробовал оба. Устанавливаем этот гем 'rails_12factor' или добавляем следующий код в мой файл 'config / environment / production.rb'

конфигурации / среда / production.rb

config.public_file_server.enabled =     ENV['RAILS_SERVE_STATIC_FILES'].present?

if ENV["RAILS_LOG_TO_STDOUT"].present?
  logger           = ActiveSupport::Logger.new(STDOUT)
  logger.formatter = config.log_formatter
  config.logger = ActiveSupport::TaggedLogging.new(logger)
end

Затем, если я запускаю rake db: create, а затем rake db: migrate, это выдает мне ошибки, поэтому я запускаю rake db: reset, и это позволяет выполнить миграцию. Если я запускаю свой сайт, я получаю ошибку

PG::UndefinedTable: ERROR:  relation "videos" does not exist
LINE 1: SELECT  "videos".* FROM "videos" ORDER BY "videos"."title" A...
                            ^
: SELECT  "videos".* FROM "videos" ORDER BY "videos"."title" ASC LIMIT $1 OFFSET $2
Extracted source (around line #2):

<div class="container">
<% @videos.each do |x| %>
<p> <div class="child">  
  <video controls width="310" height="230" src="<%= x.file %>"></video>
    <p> <%= x.title %> </p>

Когда я смотрю на свои таблицы через ActiveRecord :: Base.connection.tables, я вижу, что видео существует.

["Видео", "ipaddresstrackers", "пользователи", "голоса", "schema_migrations", "ar_internal_metadata"]

1 Ответ

1 голос
/ 29 марта 2019

Переименуйте таблицу "Videos" в "videos".

В PostgreSQL имена без кавычек не чувствительны к регистру.Таким образом, SELECT * FROM videos и SELECT * FROM ViDeOs эквивалентны.

Однако в кавычках учитывается регистр.SELECT * FROM "videos" не эквивалентно SELECT * FROM "Videos".

Подробнее здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...