[Ting's笔记Day5]在部署到Heroku之前,将Rails项目从SQLite设定为PostgreSQL

时间:2022-12-30 10:11:31

前情提要:

Paas(平台及服务)公司Heroku是个可以把我们写好的App部署到网际网络的好地方。而本篇是我从自己的上一篇文章:将Ruby on Rails项目部署到Heroku遇到的问题,当时困扰了快两小时,好在搜寻完解法搞定完后,就兴奋地延伸为一篇文章了!找到点子写文章果然是遇到bug的最佳副产品

Heroku的数据库是使用PostgreSQL,而这篇文章有说明为什么不用SQLite在Heroku。

但Rails框架在我们的电脑本机rails new app设定时,为了初学者快速理解学习,预设是SQLite。

所以如果没有变更数据库,直接把Rails push到Heroku上去,就会出现问题。

看完这篇数据库的文章比较,以一句话来大概解释比较sqlite与PostgreSQL,sqlite缺乏额外优化性能的灵活性,且同一时间只允许一个写入操作;可扩展的PostgreSQL提供了可靠性和数据完整性,因此是更好的选择。

[问题]

我在本机的Ruby on Rails项目所用的数据库是SQLite,当时还未想到之后会部署到Heroku。

因此,在上篇文章做到Step3 >>步骤B.建立Heroku gem:修改我的本地文件夹里的gem file,当我新增一个gem叫做'pg'这个步骤时…

问题出现了!本机遇到的错误讯息:No connection pool for ActiveRecord::Base

[解法]

Step1.修改rails项目的/config/Gemfile

Pg套件,让我们在Ruby上使用关联式数据库PostgreSQL的界面的好帮手。

(Pg套件详细数据:http://www.leafor.com

我们可以/config/Gemfile加上这几行代码,

让在Heroku上线时候跑的是PostgreSQL,而在本机的时候还是跑SQLite。

Rails应用程序预设提供了三种不同的执行模式:

development environment:开发模式,用在你的开发的时候

test environment:测试模式,用在执行测试程序时

production environment:正式上线模式,用在实际的上线运作环境

group:production do

gem 'pg'

end

group:development,:test do

gem 'sqlite3'

end

或是写成:

gem 'sqlite3',group::development

gem 'pg',group::production

[注意]gem 'pg'后面要加逗号,啊!不然就会向我一样出现Syntax error…

欣慰的是,用错误讯息搜寻关键字,发现在*上也有人跟我犯过同样的错误XD

https://*.com/questions/18684527/gemfile22-syntax-error-unexpected-tidentifier-expecting-end-of-input

Step2.跑bundle install,再重启rails server。

记得,每次在Gemfile修改套件数据,都要跑bundle install处理套件相依性问题。

(如果你在本机,想避免安装任何在production环境下跑的gem,可输入:bundle install --without production)

而每次跑完bundle都要先用control+ c关掉Terminal页面的服务器,

再重启服务器rails s之后,如下图:localhost数据库的问题已解决了:

但你还是看不到首页的数据:

Step3.部署到Heroku:git push heroku master

最后两步:push!git push heroku master,

还要跑完heroku rake db:migrate指令才会生效喔!

(如果转换数据库之前有些bug,run指令的时候会提示哪些字段可能出了问题。)

首页成功显示数据库!

==

后记:

遇到这个bug让我提早了解跟ruby on rails相关的数据库概念,是一个很有价值的坑(bgrayart)!

如果你想在本机建立rails app的当下,直接设定成PostgreSQL而非SQLite(节省之后deploy的麻烦~),可以参考这篇文章:

Rails使用PostgreSQL

[Ting's笔记Day5]在部署到Heroku之前,将Rails项目从SQLite设定为PostgreSQL的更多相关文章

  1. [Ting's笔记Day4]将Ruby on Rails项目部署到Heroku

    今天想笔记的是把自己写的Ruby on Rails项目部署(Deploy)到Heroku! Heroku是Salesforce公司旗下的云端服务商,支持多种程序语言像是Ruby,PHP,Python等 ...

  2. [Ting's笔记Day8]活用套件carrierwave gem:(3)Deploy图片上传功能到Heroku网站

    前情提要: 身为Ruby新手村民,创造稳定且持续的学习步调很重要,我用的方法就是一周在IT邦写三篇笔记,希望藉由把笔记和遇到的bug记录下来的过程,能帮助到未来想用Ruby on Rails架站的新手 ...

  3. python笔记 - day5

    python笔记 - day5 参考: http://www.cnblogs.com/wupeiqi/articles/5484747.html http://www.cnblogs.com/alex ...

  4. (转)ZooKeeper 笔记(1) 安装部署及hello world

    ZooKeeper 笔记(1) 安装部署及hello world   先给一堆学习文档,方便以后查看 官网文档地址大全: OverView(概述) http://zookeeper.apache.or ...

  5. ActionBarSherlock学习笔记 第一篇——部署

    ActionBarSherlock学习笔记 第一篇--部署          ActionBarSherlock是JakeWharton编写的一个开源框架,使用这个框架,可以实现在所有的Android ...

  6. OGG学习笔记04-OGG复制部署快速参考

    OGG学习笔记04-OGG复制部署快速参考 源端:Oracle 10.2.0.5 RAC + ASM 节点1 Public IP地址:192.168.1.27 目标端:Oracle 10.2.0.5 ...

  7. [Ting's笔记Day9]活用套件Carrierwave gem:(4)使用Imagemagick修改图片大小

    前情提要: 这几天我都在实验Carrierwave这套图片上传套件,也顺利部署到Heroku架站正式环境了.:) 接下来我遇到了新的问题:要如何在上传的时候,让Carrierwave gem大型siz ...

  8. [Ting's笔记Day7]活用套件carrierwave gem:(2)利用Amazon S3架设图片服务器

    来到第7篇了!培养写作习惯真是不容易:) 在我的上一篇文章活用套件carrierwave gem:(1)在Rails实现图片上传功能,上传图片功能已经完成啦!但是目前图片仅能上传在自己的本地文件夹内孤 ...

  9. 将 django部署到 heroku上

    为什么要这样做,因为我并没有弄懂,使用传统和推荐的方法来部署django.刚好我手里有这么一份教程我就按照这么做了. 1. 访问 http://heroku.com/ 完成一个注册,注册需要一个国外的 ...

随机推荐

  1. php编码规范

    PHP 文件格式 1.对于只包含有 PHP 代码的文件,结束标志("?>")是不允许存在的,PHP自身不需要("?>"), 这样做, 可以防止它的末 ...

  2. Qt Style Sheet实践(三):QCheckBox和QRadioButton

    导读 单选按钮(QRadioButton)和复选框(QCheckBox)是界面设计中的重要元素.单选按钮只允许用户在一组选项中选择一个,且当其中一个被选中的时候,按钮组中的其他单选按钮自动取消.复选框 ...

  3. 第一个demo

    1.首先这是最初的概念模型. 2.最后设计成这样. 3.运行

  4. [设计模式] 15 解释器模式 Interpreter

    在GOF的<设计模式:可复用面向对象软件的基础>一书中对解释器模式是这样说的:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子.如果一种特定类 ...

  5. delphi TTreeView组件遍历磁盘目录

    TTreeView组件遍历磁盘目录 实例说明 TTreeView组件是一个以分枝结构或者说树状结构显示数据的组件,以该组件显示数据具有较好的等级关系和逻辑层次,并且易于操作.在组件中显示的数据结构与系 ...

  6. HDU 1495 非常可乐 BFS搜索

    题意:有个为三个杯子(杯子没有刻度),体积为s,n,m,s=m+n, 刚开始只有体积为s的杯子装满可乐,可以互相倒,问你最少的次数使可乐均分,如果没有结果,输出-1; 分析:直接互相倒就完了,BFS模 ...

  7. eclipse mybatis Generator

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  8. Jquery OR Js 实现图片预览

    Jquery方法一: <!DOCTYPE html> <html> <head>     <title></title>     <s ...

  9. C&num;的static

    1.static意思是静态,可以修饰类.字段.属性.方法2.标记为static的就不用创建实例对象调用了,可以通过类名直接点出来3.static三种用法:4.用于变量前,表示每次重新使用该变量所在方法 ...

  10. 打通Linux脉络系列:进程、线程和调度

    http://edu.csdn.net/huiyiCourse/series_detail/60 http://edu.csdn.net/mycollege