Tag: postgresql

Rails 4 – 如何在开发中使用sqlite3和使用Heroku生成PostgreSQL

我正在尝试部署到Heroku但不能,因为默认的sqlite3服务器仍然存在。 检测到Heroku不支持的sqlite3 gem。 https://devcenter.heroku.com/articles/sqlite3 在另一个使用Rails 3.2.13的教程中,我能够使用sqlite3作为dev db和Postgres作为生产db。 Gemfile在Rails 4中看起来有所不同,但我已将其修改为具有以下内容: group :development do # Use sqlite3 as the database for Active Record gem ‘sqlite3’ end group :production do gem ‘pg’ end 然后我更改了我的database.yml文件,以便生产部分看起来像这样: production: adapter: postgresql database: my_production_database pool: 5 timeout: 5000 然后我运行了bundle install和rake db:create和rake db:migrate但仍然无法推送到Heroku。 所以我尝试了rake db:drop以及rake db:create和rake db:migrate但仍然收到相同的错误消息。 我错过了什么吗? 我还需要做些什么来确保我将Postgres作为我的生产数据库并且能够使用Heroku?

在Rails / Heroku上对Postgres数据库的意外SQL查询

我正在使用NewRelic向我的一个Rails应用程序发出一个非常长的请求,发现一些看起来完全是外来的SQL查询占用了相当长的时间。 我已经谷歌了,但我空洞地说出它们是什么,更不用说我是否可以防止它们发生。 SELECT COUNT(*) FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind in (?, ?) AND c.relname = ? AND n.nspname = ANY (current_schemas(false)) …和… SELECT a.attname, format_type(a.atttypid, a.atttypmod), pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod FROM pg_attribute a LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum WHERE […]

如何通过Rails 3中的时间片(总和,平均值,最小值,最大值等)获取聚合数据

如何在Rails 3中创建由时间片聚合的活动关系查询? 我想建立一个查询,每隔n分钟可以为具有特定名称的计数器的每个样本返回min,max,avg,sum,count。 create_table “samples” t.integer “counter_id” t.string “name” t.float “value” t.datetime “created_at” end

Rails重置所有Postgres序列?

以下在Rails 3控制台中可以重置Postgres序列: ActiveRecord::Base.connection.reset_pk_sequence!(‘menucontrols’) ActiveRecord::Base.connection.reset_pk_sequence!(‘statuscodes’) ActiveRecord::Base.connection.reset_pk_sequence!(‘wostatuses’) ActiveRecord::Base.connection.reset_pk_sequence!(‘taskstatuses’) ActiveRecord::Base.connection.reset_pk_sequence!(‘priorities’) ActiveRecord::Base.connection.reset_pk_sequence!(‘actcodes’) 是否有一个命令可以重置所有这些命令而不必单独执行每个命令? 谢谢您的帮助!

每次推送到heroku,图像都没有显示,回形针

这是我的情况。 我正在使用paperclip让用户上传图片。 它做得很好,一切都很好。 然后,我把它推到了heroku。 对于妈妈,我可以看到用户上传的所有图片。 但是,每次进行新的提交并再次推送到heroku时,我之前的所有图像都消失了。 好像没有文件了,无法加载它。 所以,在这里我的想法是:每当我推送到heroku服务器时,本地的图像文件是否已上传到heroku服务器? 我为它研究了我的问题,我真的不明白他们对heroku的实际说法,我不知道是不是我的问题。 Heroku有一个只读文件系统。 这意味着Paperclip无法将上传的文件保存到Heroku中的任何位置。 如果您希望能够将文件上载到Heroku上托管的应用程序,则必须将文件作为二进制blob存储在数据库中,或者必须使用单独的服务来存储文件。 如果您正在寻找单独的服务,Paperclip内置支持与Amazon S3集成。 我发现亚马逊S3需要信用卡才能注册,如果我没有信用卡,那我就不能使用他们的服务了? 任何细节建议和解释都表示赞赏。谢谢

Rails 4通过单个属性查询唯一

所以这不仅仅是一个问题,而是我想要做的事情。 我有三个对象,叫做Items 我想做一个只返回每个唯一“name”属性中的一个的查询。 类似于Item.select(‘distinct(name), items.*’) 这不起作用,它仍然返回所有三个项目。 如何形成此查询以便它只返回:

多租户轨道应用:不同技术的优缺点是什么?

我最初为一个客户端编写了Ruby on Rails应用程序。 现在,我正在更改它,以便它可以用于不同的客户端。 我的最终目标是某些用户(不是我)可以单击按钮并创建新项目。 然后生成所有必要的更改(新模式,新表,代码处理),而无需任何人需要我编辑database.yml文件或添加新的模式定义。 我目前正在使用SCOPED访问。 所以我有一个项目模型,其他相关模型有一个project_id列。 我已经查看了有关Rails中多租户应用程序的其他post。 很多人似乎建议为Postgres中的每个新客户创建不同的架构。 但是,对于我来说,对于新客户端而言,在数据模型方面具有不同的模式并没有多大帮助。 每个客户端将具有相同的表,行,列等。 我对每个客户的愿景是我的生产数据库首先有一个不同项目/客户的表。 并且这些表中的每一个都链接到一组表,这些表对于不同的数据几乎相同。 换句话说,表格。 或者换句话说,第一个表将映射到具有相同结构的每个客户端的不同数据集。 我解释我的愿景的方式与Postgres实现不同“模式”的方式类似吗? 它看起来像嵌套表吗? 或者Postgres是否必须查询数据库中的所有信息? 我目前不使用Postgres,但我愿意学习它是否适合设计。 如果您知道使用适合我需求的Rails的数据库软件,请告诉我。 现在,我正在使用范围来完成多租户应用程序,但它不会感觉可扩展或干净。 但是,如果我给他们提供可填写的信息,它确实使非技术用户很容易创建新项目。 你是否知道在多用户模式Postgres定义是否可以让用户点击按钮后自动工作? 我希望这可以由Rails处理,如果可能的话不是由外部脚本处理? (请以任何方式提出建议) 最重要的是,您是否建议使用任何插件,或者我应该为此任务采用不同的框架? 我发现Rails在某些抽象情况下受到限制,这是我第一次遇到Rails扩展问题。 任何与多租户申请或我的情况有关的建议都是受欢迎的。 如有任何问题需要澄清或提供其他建议,也欢迎。 谢谢, – 戴夫

在OSX上安装PostgreSQL以进行Rails开发

在过去的几天里,我花了几个小时试图让PostgreSQL在我的Mac上与RoR玩得很好。 我已经使用了几种不同的方法,如手动安装PostgreSQL和从各种一键安装程序安装 然而,我尝试的所有不同方法在安装pg gem的最后一步失败了。 很沮丧! 这里有没有人有一个经过试验和测试的教程来完成这项工作? (或者你想在这里写一些说明……?) 我的环境是这样的:Macbook运行OSX 10.6,PostgreSQL 8.4.1服务器

用于生产的Rails性能调优?

我正在接近部署基于Rails 3.1.x构建的应用程序,并开始运行一些性能测试。 在稍微摆弄ab之后,我看到一些非常令人沮丧的结果,在Heroku上产生大约15个请求/秒。 在本地测试时,我看到类似的结果,这些结果确实表明它是一个应用程序问题比什么都重要。 我正在运行Unicorn,比Celadon Cedar上的Thin快约40%。 此外,我正在使用PGSQL共享数据库。 我希望有人可以共享一份清单或基本上是一份发布清单,在准备生产应用程序并进入速度调整需求时,我应该通过该清单。 到目前为止,我还没有找到一个真正简明的可操作项目列表,根据我的情况,这似乎是有意义的。 或者,如果您在此类问题中有扎实的实践经验,那么任何输入都将受到赞赏!

我对Unicorn,Sidekiq和DB Pool大小的理解是否正确?

我有Unicorn,Sidekiq和Postgres设置。 我试图了解正确的配置设置,以便我没有达到最大数据库连接限制。 在Opsworks中,m1.small Postgres RDS实例最多可以有121个连接。 我有一个db池大小为5。 考虑一下。 Sidekiq和Unicorn是它自己的过程。 因此, 每个进程的数据库池大小为5.如果我的理解错误,请纠正我。 如果我有5个独角兽进程’,那意味着5 * 5 = 25个数据库连接 现在这是我有点困惑的部分,因为Sidekiq是multithreading的。 如果Sidekiq的并发度为5.并且db池大小也设置为5.这是否意味着在给定时间内有25个潜在的数据库连接? 这意味着,对于一个实例,我可以有50个db连接?