简体   繁体   English

如何开始在Rails应用程序中使用Postgresql数据库?

[英]How do I begin using Postgresql database with rails applications?

I have spend several hours looking for solutions to this on the web. 我已经花了几个小时在网上寻找解决方案。 Postgresql installation guides do not help since i am not familiar with interacting with databases only with ruby on rails and dealing with them this way. Postgresql安装指南无济于事,因为我不熟悉仅使用ruby on rails与数据库进行交互并以这种方式处理它们。

I have made several simple rails application by following tutorials and am still learning rails. 通过遵循教程,我已经做了几个简单的Rails应用程序,并且仍在学习Rails。 I am using Windows 10 and I have deployed some of these to Heroku for which i had to use the pg gem becasue Heroku doesnt use sqlite3. 我正在使用Windows 10,并且已将其中一些部署到Heroku,因此必须使用pg gem,因为Heroku不使用sqlite3。 But I have read in several places that it is necessary to install postgresql locally. 但是我在几个地方读到,有必要在本地安装postgresql。 So i have installed it, i think, but now i am lost. 我想我已经安装了它,但是现在我迷路了。 I have a software called pgAdmin4 and now i have absolutely no idea what to do in order to use postgresql through rails. 我有一个名为pgAdmin4的软件,现在我完全不知道如何通过Rails使用Postgresql。 I started a new app just to test it by using the following command: 我使用以下命令启动了一个新应用程序以对其进行测试:

rails new postgresapp --database=postgresql

This has given me the basic starting point for a new app set up to use postgresql. 这为我设置了使用postgresql的新应用程序提供了基本的起点。 the first error that I get when i try to connecct to the localhost3000 is: 当我尝试连接到localhost3000时遇到的第一个错误是:

PG::ConnectionBad
fe_sendauth: no password supplied

Extracted source (around line #56):

    ### Convenience alias for PG::Connection.new.
    def self::connect( *args )
        return PG::Connection.new( *args )
    end

bearing in mind that i am not sure if the installation was a success. 请记住,我不确定安装是否成功。 i went through the process of installation and entered a password and all the information so i assume that it did install somewhere. 我经历了安装过程,输入了密码和所有信息,因此我认为它确实安装在某个地方。

also there are no servers showing on pgAdmin so i added one called localhost. pgAdmin上也没有显示服务器,所以我添加了一个叫做localhost的服务器。 i am not sure if this was the right thing to do or not. 我不确定这是否正确。

gem file: 宝石文件:

source 'https://rubygems.org'

git_source(:github) do |repo_name|
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
  "https://github.com/#{repo_name}.git"
end


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.0.6'
# 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

# 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', '>= 3.3.0'
end

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

database.yml 数据库

# PostgreSQL. Versions 9.1 and up are supported.
#
# Install the pg driver:
#   gem install pg
# On OS X with Homebrew:
#   gem install pg -- --with-pg-config=/usr/local/bin/pg_config
# On OS X with MacPorts:
#   gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
# On Windows:
#   gem install pg
#       Choose the win32 build.
#       Install PostgreSQL and put its /bin directory on your path.
#
# Configure Using Gemfile
# gem 'pg'
#
default: &default
  adapter: postgresql
  encoding: unicode
  # For details on connection pooling, see rails configuration guide
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default
  database: postgresapp_development

  # The specified database role being used to connect to postgres.
  # To create additional roles in postgres see `$ createuser --help`.
  # When left blank, postgres will use the default role. This is
  # the same name as the operating system user that initialized the database.
  #username: postgresapp

  # The password associated with the postgres role (username).
  #password:

  # Connect on a TCP socket. Omitted by default since the client uses a
  # domain socket that doesn't need configuration. Windows does not have
  # domain sockets, so uncomment these lines.
  #host: localhost

  # The TCP port the server listens on. Defaults to 5432.
  # If your server runs on a different port number, change accordingly.
  #port: 5432

  # Schema search path. The server defaults to $user,public
  #schema_search_path: myapp,sharedapp,public

  # Minimum log levels, in increasing order:
  #   debug5, debug4, debug3, debug2, debug1,
  #   log, notice, warning, error, fatal, and panic
  # Defaults to warning.
  #min_messages: notice

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  <<: *default
  database: postgresapp_test

# As with config/secrets.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
#   DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
#   production:
#     url: <%= ENV['DATABASE_URL'] %>
#
production:
  <<: *default
  database: postgresapp_production
  username: postgresapp
  password: post#<%= ENV['POSTGRESAPP_DATABASE_PASSWORD'] %>

When you check what is in your database.yml file you need user and password configuration. 当您检查database.yml文件中的内容时,需要配置用户密码

You have password as blank value. 您将密码作为空白值。

I would suggest create a postgreSql user with password and use those credentials 我建议使用密码创建一个postgreSql用户并使用这些凭据

You will need psql for accessing postgreSql from terminal, to create new user with permissions. 您将需要psql从终端访问postgreSql,以创建具有权限的新用户。

one of the links , you can find a lot more about this on the web. 其中一个链接 ,您可以在网上找到更多有关此的信息。

But you problem is user and his password 但是你的问题是用户和他的密码

After fixing you user and password problems, you will need to create the DB with the name from database.yml . 解决用户密码问题之后,您将需要使用来自database.yml的名称创建database.yml

In you database.yml DB name is postgresapp_development . 在您的database.yml数据库名称为postgresapp_development You will ne to create it. 您将需要创建它。 Find a client for windows to connect to you postgreSql with user and password you defined when installing and create the DB. 查找用于Windows的客户端,以使用在安装和创建数据库时定义的用户名和密码连接到postgreSql。

Check this for accessing you postgresSql server 检查这个访问你服务器PostgreSQL的

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM