小编Bre*_*rts的帖子

在不擦除旧模型的情况下更新Backbone.js集合

我有一个应用程序,它包含一个Backbone.js集合和与服务器的实时连接.

每当任何客户端在集合中添加/删除/更新模型时,更新的集合将广播到所有其他客户端(不是delta;整个集合).

当从其他客户端处理此更新事件时,我发现更新集合的唯一方法是reset().不幸的是,这会擦除旧模型并创建新模型,以及所有与视图相关的副作用.

是否有一种Backbone认可的方式来更新维护和更新原始模型的集合(通过id进行比较),只在必要时创建/删除它们?

UPDATE Backbone添加了Collection.set方法,该方法能够更新现有模型.

backbone.js

11
推荐指数
1
解决办法
3977
查看次数

基于组件的模块化Sinatra应用程序的体系结构

我正在研究一个包含大约10个不同功能组件的Sinatra应用程序.我们希望能够将这些组件混合并匹配到应用程序的单独实例中,完全由config.yaml文件配置,类似于:

components:

- route: '/chunky'
  component_type: FoodLister
  component_settings: 
    food_type: bacon
    max_items: 400

- route: 'places/paris'
  component_type: Mapper
  component_settings: 
    latitude: 48.85387273165654
    longitude: 2.340087890625  

- route: 'places/losangeles'
  component_type: Mapper
  component_settings:
    latitude: 34.043556504127466
    longitude: -118.23486328125
Run Code Online (Sandbox Code Playgroud)

如您所见,组件可以多次实例化,每个组件都有自己的上下文设置.

每个组件至少包含一个路由,其中​​"route"属性来自用于基础的配置文件.

组织和实例化模块代码的最佳方法是什么?

ruby sinatra

10
推荐指数
1
解决办法
5562
查看次数

避免Rack的冗余Bundler依赖声明

想象一下Rack应用程序,它在启动时创建一些其他Ruby应用程序的实例并将路由映射到这些应用程序.此应用程序的Rack依赖性为1.2.2.

现在假设我们正在开发一个将由该应用程序运行的子应用程序.它具有1.2.6的Sinatra依赖性并使用Bundler.这是宝石文件是一个贫瘠的:

source "http://rubygems.org"

gem "sinatra", "1.2.6"
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我们bundle install这个子应用程序,Bundler,不知道父应用程序的Rack 1.2.2依赖性,将安装与Sinatra 1.2.6兼容的最新版本的Rack:当前1.3.2.我们的Gemfile.lock将是:

GEM
  remote: http://rubygems.org/
  specs:
    rack (1.3.2)
    sinatra (1.2.6)
       rack (~> 1.1)
       tilt (< 2.0, >= 1.2.2)
    tilt (1.3.2)

PLATFORMS
  ruby

DEPENDENCIES
   sinatra (= 1.2.6)
Run Code Online (Sandbox Code Playgroud)

当我们尝试启动父应用程序(启动我们的子应用程序)时,我们将得到:

You have already activated rack 1.2.2, but your Gemfile requires rack 1.3.2. Consider using bundle exec. (Gem::LoadError)

处理这种情况的正确方法是什么?是的,我们可以明确要求机架1.2.2,但我们有效地说明了依赖的依赖性.我想,理想情况下,父应用程序将是我们的子应用程序需要的gem,但在这种情况下,我们没有能力做到这一点.

rack sinatra bundler

9
推荐指数
1
解决办法
352
查看次数

标签 统计

sinatra ×2

backbone.js ×1

bundler ×1

rack ×1

ruby ×1