小编Wen*_*Wen的帖子

Ruby lib的JSON.load和JSON.parse方法有什么区别?

从ruby文档中我可以看到该load方法将proc作为arg而parse不是.还有其他区别吗?比方说,当我有一个JSON字符串时,我应该使用哪种方法将其转换为Ruby对象?

load(source,proc = nil,options = {}) 从JSON源加载ruby数据结构并返回它.源可以是类似于字符串的对象,类似IO的对象,也可以是响应read方法的对象.如果给出了proc,它将以任何嵌套的Ruby对象作为参数以深度优先顺序递归调用.要修改默认选项,也要传递可选选项参数.此方法是Marshal和YAML的加载/转储接口实现的一部分.别名为:restore

parse(source,opts = {}) 将JSON文档源解析为Ruby数据结构并返回它.

ruby json

32
推荐指数
3
解决办法
2万
查看次数

在生产服务器上使用DataMapper和Sinatra设置数据库的正确方法是什么?

DataMapper文档中,我认为至少需要调用四个函数才能进行数据库设置:

DataMapper.setup(:default, 'sqlite:///path/to/project.db')
DataMapper.finalize
DataMapper.auto_migrate!
DataMapper.auto_upgrade!
Run Code Online (Sandbox Code Playgroud)

在许多DataMapper + Sinatra教程中,我了解到auto_migrate!并且auto_upgrade!不应该在每次在生产服务器上加载应用程序时调用它.但同时许多例子在sinatra应用程序的主ruby文件中调用这些函数,比如说app.rb,没有额外的检查.而一些例子根本不打电话finalize.到目前为止,我很困惑,我不知道在生产服务器上做什么.

以下是简单app.rb的例子,我有一些问题:

  1. 何时何地应该finalize被召集?
  2. 在第一次部署应用程序时db,生产服务器上没有文件,如何自动创建它?或者我必须project.db手动创建文件?
  3. 由于它auto_upgrade!被包装在:development块中,因此不会在生产服务器上调用它.当我在其中添加或删除列时,我应该如何升级数据库?
require 'sinatra'
require 'data_mapper'

configure do
  DataMapper.setup :default, "sqlite3://#{Dir.pwd}/project.db"
end

class Book
  include DataMapper::Resource
  property :id, Serial
  property :title, Text

  belongs_to :author
end

class Author
  include DataMapper::Resource
  property :id, Serial
  property :name, Text

  has n, :books
end

configure :development do
  DataMapper.auto_upgrade!
end

get '/:id' do …
Run Code Online (Sandbox Code Playgroud)

ruby sqlite datamapper sinatra

13
推荐指数
1
解决办法
4424
查看次数

在oder中使用哪个来获取javascript,Date()或new Date()中的当前时间?

如果我将当前时间作为函数的参数传递,哪种方式是正确的,Date()或者new Date()?以下面的代码为例,哪一个更好?

function logTime(time) {
    console.log(time);
}

//One
var now = new Date();
logTime(now);

//Two
logTime(new Date());

//Three
logTime(Date());
Run Code Online (Sandbox Code Playgroud)

javascript

2
推荐指数
1
解决办法
69
查看次数

标签 统计

ruby ×2

datamapper ×1

javascript ×1

json ×1

sinatra ×1

sqlite ×1