Tag: 续集

如何将heroku数据拉入本地SQLite3数据库? 遇到问题

我正在尝试从我的Rails应用程序进行本地备份,该应用程序部署到Heroku,并遇到问题。 我按照这里的说明操作: http : //docs.heroku.com/taps并安装了Taps。 我得到两种错误。 我在本地创建了一个SQLite数据库并尝试使用此命令提取数据: (sudo)heroku db:pull sqlite://Users/username/folder/testbackup.db 要么 (sudo)heroku db:pull sqlite:// username:password@localhost/Users/username/folder/testbackup.db 但无论哪种方式,我得到这个: 无法连接数据库:Sequel :: DatabaseConnectionError – > SQLite3 :: CantOpenException:无法打开数据库:无法打开数据库文件 或者,我尝试让Taps在我的应用程序中自动检测开发数据库并重写它,尽管这不是我想要的。 然后我开始得到如下错误: /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:777:in report_activate_error’: RubyGem version error: sequel(3.15.0 not ~> 3.13.0) (Gem::LoadError) from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:211:in激活’from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:1056:in’gem’from/ Library / Ruby / Gems / 1.8 /gem/水龙头-0.3.10 /斌/架构:4 并最终 /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/lib/sqlite3/errors.rb:62:in`check’: SQLite3 :: SQLException:PRIMARY KEY必须是唯一的(Sequel :: […]

将字符串解析为复杂布尔值的递归逻辑?

我确信之前已经完成了,我找不到它。 我需要将“((A OR B)和C)或D”之类的内容转换为属性的数据库查询。 具体来说,我正在使用Ruby Sequel。 任何人都可以指出我的例子或实用程序或某些东西会阻止我重新发明轮子吗?

如何使用续集声明postgresql json / jsonb字段?

我坚持认为。 在docs中找不到如何将这样的空间数据类型声明为inet和jsonb或json。 ruby2.4.1,续集4.47 普通ruby脚本require ‘sequel’ 。 宣言如 DB.create_table :requests do primary_key :id foreign_key :client_id, :clients foreign_key :service_id, :services DateTime :created_at, null: false DateTime :answered_at, null: false JsonBType :request, null: false end

有关从mysql源填充sqlite数据库的ruby解决方案的任何建议

我有一个使用MySQL的Rails应用程序。 应用程序需要填充sqlite数据库,以便从主mysql数据库分发到客户端应用程序。 sqlite数据库的模式与mysql数据库非常相似,但不完全相同。 将使用存储在主mysql数据库中的模式子集和数据来填充sqlite数据库。 数据子集将由http请求中传递的参数确定。 这不是作为维护操作,而是作为sqlite db将mysql数据库的子集交付给客户端应用程序。 我正在考虑尝试修改点击或使用续集来编写金属应用程序以连接到两个数据库以传输数据。 任何其他建议将不胜感激?

我们如何validationSequel.connect是否在Rails中打开了我们的SQLite3数据库?

我们试图找出我们的Rails 3.1.12应用程序是否打开带有gem续集的SQLite3数据库(版本3.6或更高版本)。 这是我们做的: rails console 在Rails控制台会话中,键入以下命令: sequel = Sequel.connect(‘sqlite://development’) 它返回: => # sequel.class也会返回: => Sequel::SQLite::Database 但是,当尝试使用sequel.execute从数据库中进行选择或使用sequel.execute检查表时,返回的文本表明该表不存在。 我们不太确定数据库(这里的开发)是否已经打开。 我们如何检查?

Rails 5+中OO / Tableinheritance(即STI,MTI,CLI)的可能解决方案是什么?

这些是我看到的可以帮助解决“ Rails 5 – 对象关系阻碍以及如何构造多个inheritance的类/表 ”TL; DR – 对象表阻抗ORM问题的选项。 抽象基类,每个子类都有自己的表(即在自己的表中存储每种类型的公共属性) STI,只需将所有内容放在一个Base类和Table中,并在该表中创建所有子属性,但让子类(即您的其他Rails模型)inheritance该Base类。 续集db( 支持类表inheritance ) Dan Chak的’Enterprise Rails’解决方案( 这里 )看起来很旧但看起来很有前景 组成 还有其他人吗?

Ruby和MySQL的UTF-8字符

我正在将Sinatra应用程序从SQLite3切换到MySQL。 出于某些原因,我无法理解,当我使用Ruby和Sequel从MySQL中提取数据时,字符以8-BIT ASCII而不是UTF-8出现。 部署环境是FreeBSD 9.1和MySQL 5.6.12,从FreeBSD端口安装了系统范围的ruby19。 RVM ruby​​-2.0p247产生相同的结果。 我的my.cnf如下: # The following options will be passed to all MySQL clients [client] default-character-set=utf8 #password = your_password port = 3306 socket = /tmp/mysql.sock # Here follows entries for some specific programs # The MySQL server [mysqld] port = 3306 socket = /tmp/mysql.sock skip-external-locking key_buffer_size = 128M max_allowed_packet […]

Ruby:输出续集模型关联

我不认为只使用Sequel模型是可能的,但我想做的是让我的父模型( 作者 )在我做Author.to_json这样的事情时输出它的子模型( Book )。 这是我的代码: require ‘sequel’ require ‘json’ db = Sequel.connect(‘postgres://localhost/testing’); class Sequel::Model self.plugin :json_serializer end class Author < Sequel::Model(:author) one_to_many :book, key: :author_id, primary_key: :id def get_author Author.each do |e| books = Array.new e.book.each do |f| books.push(f.values) end e.values[:books] = books puts JSON.pretty_generate(e.values) end end end class Book < Sequel::Model(:book) end author […]

如何将ActiveRecordvalidation器作为实例方法调用(ala Sequel)?

我有一个模型需要不同的validation器,具体取决于它的当前状态。 我应该如何为每个实例调用ActiveRecordvalidation器? 我想重用尽可能多的管道,但我不知道如何继续。 class Order < ActiveRecord::Base attr_accessible :state validate :state_specific_validations def state_specific_validations if :paid == self.state # Warning: here be Unicorns… # Wishful thinking… validate_presence_of :paid_at validate_associated :purchaser # Hopeful. What are the validators called internally in Rails? errors << PresenceValidator.new(self, :paid_at).valid? errors << AssociationValidator.new(self, :paid_at).valid? # Plan B # … Hoping for help […]

续集(Ruby),如何以安全的方式增加和使用DB计数器?

我找到了4种“正确”的方法: 在ActiveRecord的备忘单中,用户替换ActiveRecord的increment , increment_counter应该是album.values[:column] -= 1 # or += 1 for increment和album.update(:counter_name=>Sequel.+(:counter_name, 1)) 在SO解决方案中, update_sql建议用于相同的效果s[:query_volume].update_sql(:queries => Sequel.expr(3) + :queries) 在随机线程中,我发现了这个数据集dataset.update_sql(:exp => ‘exp + 10’.lit) 在用于更新的Sequels API文档中,我找到了这个解决方案http://sequel.jeremyevans.net/rdoc/classes/Sequel/Dataset.html#method-i-update 然而,没有一个解决方案实际更新值并以安全,primefaces的方式返回结果。 基于“添加值然后保存”的解决方案应该在多处理环境中以不确定的方式失败,从而导致以下错误: 专辑的计数器是0 线程A和线程B都获取album 线程A和线程B都增加了散列/模型/ etc中的值 线程A和线程B都将计数器更新为相同的值 结果:A和B都将计数器设置为1并使用计数器值1 Sequel.expr , Sequel.expr和Sequel.+实际上并没有返回一个值,而是一个Sequel::SQL::NumericExpression和(afaik)你没有办法解决另一个DB往返问题,这意味着可以发生: 专辑的计数器是0 线程A和B都增加值,值增加2 线程A和B都从DB中获取行 结果:A和B都将计数器设置为2并使用计数器值2 因此,如果没有编写自定义锁定代码,那么解决方案是什么? 如果没有,没有编写自定义锁定代码:)最好的方法是什么? 更新1 我一般不满意答案说我想要太多的生活,因为1回答建议:) 专辑只是文档中的一个例子。 想象一下,例如,您在电子商务POS上有一个交易柜台,它可以在不同的主机上同时接受2个交易,并且您需要在24小时内发送一个唯一的整数计数器(称为systan),发送2具有相同systan和1的trx将被拒绝,或者更糟糕的是,计数中的间隙被警告(因为它们暗示“缺少事务”),因此不可能使用DB的ID值。 一个不太严重的例子,但与我的用例更相关,几个文件导出在后台worker中同时触发,每个文件目的地都有自己的计数器。 计数器中的间隙被警告,工作人员在不同的主机上(因此互斥体没有用)。 我有一种感觉,我很快就会解决更严重的问题。 数据库序列也不好,因为它意味着在添加每个终端时进行DDL,我们在这里谈论1000。 即使在我不太严重的用例中,门户网站上的DDLing操作仍然是PITA,甚至可能根据下面的缓存方案不起作用(由于ActiveRecord和Sequel – 在我的情况下我使用两者 – […]