【问题标题】:Sinatra + Chartkick + Sequel gem, chart not updatingSinatra + Chartkick + Sequel gem,图表未更新
【发布时间】:2018-01-27 16:58:57
【问题描述】:

我正在运行一个非常基本的 Sinatra 服务器,它简单地显示了我通过 Sequel gem 获得的一些数据的 Chartkick 图表。我注意到图表上的数据似乎没有更新,除非我退出 Sinatra 服务器脚本并重新运行它。我真的不明白这怎么可能......我在使用 Sequel 读取我的数据库时使用的唯一非正常选项是只读选项......这会导致这种情况吗?

【问题讨论】:

  • 你能展示一些代码吗? sinatra 不会像 rails 那样在服务器运行时自动更新,但您可以使用 rerun 或 shotgun gems
  • 除了@db = Sequel.sqlite('../mydb.sqlite3', :read_only => true)MyModel.where(:attribute => true).first.. 之外没有其他代码可以显示。我试过shot弹枪并重新运行,但它仍然不会更新。这几乎就像它在缓存数据库而不是实际执行我要求它执行的调用.. 我还注意到这发生在我运行的另一台服务器上使用读取-仅限。
  • 那么,如果您只运行单个查询,您希望数据如何更新
  • 每次请求页面时都会运行查询。

标签: ruby sinatra chartkick


【解决方案1】:

事实证明,从这里阅读另一篇文章:

首先,默认情况下,多个进程可以拥有相同的 SQLite 数据库同时打开,可以进行多次读访问 并行满足。

在写入的情况下,对数据库的单次写入会锁定数据库 短时间内,什么都没有,连读都可以访问数据库文件 完全没有。

从版本 3.7.0 开始,一个新的“预写日志记录”(WAL) 选项 是可用的,读和写可以同时进行。

默认情况下,WAL 未启用。要打开 WAL,请参阅 SQLite 文档。

我目前有脚本 A,它维护与数据库文件的连接并定期写入它,脚本 B,它是我的 Sinatra 服务器,从该数据库文件中读取信息。我通过在我的 Sinatra 脚本中使用块连接解决了这个问题。我不知道如何使用 Sequel 打开 WAL...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-04
    • 2013-12-03
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多