小编fgu*_*len的帖子

Ruby中的时间范围?

我想知道时间是属于某个时间表还是其他时间.

在我的情况下是计算时间是在夜间时间表正常时间表.

我已经达成了这个解决方案:

NIGHT = ["21:00", "06:00"]
def night?( date )
  date_str = date.strftime( "%H:%M" )
  date_str > NIGHT[0] || date_str < NIGHT[1]
end
Run Code Online (Sandbox Code Playgroud)

但我认为不是很优雅,也只适用于这个具体案例而不是每个时间范围.

(我发现几个类似的问题是SO,但他们都参考了日期范围没有时间范围)

更新

解决方案必须适用于随机时间范围,不仅适用于具体的时间范围.让我们说:

"05:00"-"10:00"
"23:00"-"01:00"
"01:00"-"01:10"
Run Code Online (Sandbox Code Playgroud)

ruby time

6
推荐指数
1
解决办法
3359
查看次数

像这样的功能有单元测试吗?

我已经使用PHP和JS编写了一个webapp,它现在正在工作,并决定我应该学习单元测试并在清理我的代码时实现它.

我对应该进行单元测试的内容感到困惑.每个PHPUnit教程我都见过测试getter,setters,计算数组中的项目.我正在处理的网站上有一个显示照片的页面.用户可以像照片或将其添加到他的收藏夹.PHP主要用于站点作为运行backbone.js的客户端的API层.

我该如何为这些功能编写单元测试?函数(如下所示)抓取通过AJAX发送给它的$ _GET数据,并将一些行插入数据库.它不包含任何setter,getters或计数任何东西,也不是一个类.它甚至应该进行单元测试吗?

我可以为这些函数编写的单元测试的一个例子真的很棒!:)

/**
 * Create new Set and add item to it
 *  @return  void
 */ 
public function action_create_set() {
    // Get data from user
    $user_id = Input::get('user_id');
    $post_id = Input::get('post_id');
    $set_name = Input::get('set_name');

    // Create new set
    $data = array(
        'user_id' => $user_id,
        'name' => $set_name
    );
    $set_id = DB::table('sets')->insert_get_id($data);

    // Add item to newly created set
    DB::query("INSERT IGNORE INTO posts_sets (post_id, set_id, user_id)
        VALUES ($post_id, $set_id, $user_id)");

    // Change `created_at` & `updated_at` col of 'sets' …
Run Code Online (Sandbox Code Playgroud)

php tdd phpunit unit-testing

6
推荐指数
1
解决办法
321
查看次数

ActiveRecord,通过多态属性查找

有这个:

class Event < ActiveRecord::Base
  belongs_to :historizable, :polymorphic => true
end

user = User.create!
Run Code Online (Sandbox Code Playgroud)

我可以:

Event.create!(:historizable => user)
Run Code Online (Sandbox Code Playgroud)

但我不能:

Event.where(:historizable => user)
# Mysql2::Error: Unknown column 'events.historizable' in 'where clause'
Run Code Online (Sandbox Code Playgroud)

我必须这样做:

Event.where(:historizable_id => user.id, :historizable_type => user.class.name)
Run Code Online (Sandbox Code Playgroud)

更新

重现问题的代码:https://gist.github.com/fguillen/4732177#file-polymorphic_where_test-rb

ruby activerecord ruby-on-rails-3 active-record-query

6
推荐指数
1
解决办法
5302
查看次数

EmberJS,了解DS模型生命周期

我正在尝试监控DS模型上的状态更改.

我在文档中找到了有趣的标志:

并且它们在模板中正常工作{{#if model.isLoading}}Is Loading{{/if}},例如,我可以使用它.

但令人不安的是,这些旗帜中的观察者具有非常随机的行为.例如,我发现公寓的观察者isSaving根本不起作用.但是国旗上的观察者isReloading完美无缺.

在这里,我有一个完整的例子,说明我迄今为止所尝试过的事情.我把这个Mixin包含在我的模型中:

// app/models/mixins/loading-monitoring
import Ember from 'ember';

export default Ember.Mixin.create({
  isReloadingDidChange: Ember.observer('isReloading', function() {
    console.log('LOG: isReloadingDidChange', this.get('id'), this.get('isReloading'));
  }),

  isSavingDidChange: Ember.observer('isSaving', function() {
    console.log('LOG: isSavingDidChange', this.get('id'), this.get('isSaving'));
  }),

  isLoadingDidChange: Ember.observer('isLoading', function() {
    console.log('LOG: isLoadingDidChange', this.get('id'), this.get('isLoading'));
  }),

  isLoadedDidChange: Ember.observer('isLoaded', function() {
    console.log('LOG: isLoadedDidChange', this.get('id'), this.get('isLoaded'));
  }),

  onInit: Ember.on('init', function() {
    console.log('LOG: init', this.get('id'));
  }),

  onDidLoad: Ember.on('didLoad', function() …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

6
推荐指数
1
解决办法
877
查看次数

Amazon SQS如何控制重试次数

我正在配置beanstalk工作者环境来处理周期性任务

当请求的URL没有响应状态时,200Elastic Beanstalk会将任务再次放入队列中.

如何配置号码或重试?

我知道解释什么地方隐藏在背后ErrorVisibilityTimeout,InactivityTimeout,Dead Letter Queues...但这些概念还没有在我的脑海低效增长的绿色.

例如,我只想配置最大重试次数0,因此尝试但不重试.

worker amazon-sqs amazon-web-services amazon-elastic-beanstalk

6
推荐指数
1
解决办法
5592
查看次数

Nginx如何在不修改nginx.conf的情况下添加额外的服务器配置

我想将此额外配置添加到我的 nginx.conf 中:

server {
  listen 0.0.0.0:8081;
  rewrite     ^  https://$host$request_uri? redirect;
}
Run Code Online (Sandbox Code Playgroud)

但是当我的应用程序部署在托管服务中时,我不想修改已经存在的nginx.conf. 它可能有问题。

有什么办法可以在不修改 nginx.conf 的情况下添加这个额外的配置吗?

configuration nginx

6
推荐指数
1
解决办法
6359
查看次数

Backbone.js:从集合中删除项目

我正在使用backbone.js来实现一个名为Roster的好友列表.我对名册收集和个人的主干观点rosterEntry如下:

    Slx.Roster.Views.RosterEntry = Backbone.View.extend({
    tagName: "li",
    className : "rosterEntry clearfix",
    templateSelector: '#rosterEntryTemplate',

    initialize: function() {
        _.bindAll(this, 'render');
        this.model.bind('change', this.render);
        this.model.bind('remove', this.remove);
        this.template = _.template($("#rosterEntryTemplate").html());
    },

    remove: function () {
        debug.log("Called remove event on model");
        $(this.el).remove();
    },
    render: function() {
        var renderedContent = this.template(this.model.toJSON());
        this.id = this.model.Id;
        $(this.el).attr('id', "friendid-" + this.model.get("id")).html(renderedContent);
        return this;
    }
});

    Slx.Roster.Views.Roster = Backbone.View.extend({
        el: "div#roster-container",
        initialize: function () {
            _.bindAll(this, 'render', 'add', 'remove');
            this.template = _.template($("#rosterTemplate").html());
            this.collection.bind('reset', this.render);
            this.collection.bind('add', this.add);
            this.collection.bind('remove', this.remove);
        },
        add: …
Run Code Online (Sandbox Code Playgroud)

javascript backbone.js

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

Rails 3资产和CSS相对URLS

我有几个CSS文件使用相对路径来引用图像url( "../img/my_image.jpg" ).

一切都developmentproduction环境中工作,因为所有CSS文件都打包在一个文件中并且结构丢失,亲戚路径也丢失了,并且找不到图像.

我的结构细节

我有这样的资产结构:

/app
  /assets
    /plugins
      /my_plugin
        /img
          my_image.jpg
        /css
          my_css.css
Run Code Online (Sandbox Code Playgroud)

(/my_plugin可以是任何一组插件css,js以及images任何其他的Twitter Bootstrap文件)

进入/app/assets/plugins/my_plugin/my_css.css我有类似的东西:

background-image: url("../img/my_image.jpg");
Run Code Online (Sandbox Code Playgroud)

/app/assets/stylesheets/application.css:

*= require css/my_css.css
Run Code Online (Sandbox Code Playgroud)

最后在head我的html文件中:

<%= stylesheet_link_tag "application" %>
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能解决这个问题?

更新

Mini应用程序重现问题,在README中有安装和重现问题的指令.

ruby-on-rails asset-pipeline ruby-on-rails-3.2

5
推荐指数
1
解决办法
4930
查看次数

EmberJS,如何观察散列中任何对象的变化

我有一个像这样的对象:

// app/services/my-service.js
import Ember from 'ember';

export default Ember.Service.extend({
  counters: Ember.Object.create()
})
Run Code Online (Sandbox Code Playgroud)

myService.counters是一个散列,如:

{
  clocks: 3,
  diamons: 2
}
Run Code Online (Sandbox Code Playgroud)

我想为这个对象添加一个计算属性,返回myService.counters.clocks加上的和myService.counters.diamons

// app/services/my-service.js
...
count: Ember.computed('counters.@each', function(){
  return _.reduce(this.get('counters'), function(memo, num){ return memo + num; }, 0);
})
...
Run Code Online (Sandbox Code Playgroud)

但观察者配置不被接受,我有错误:

Uncaught Error: Assertion Failed: Depending on arrays using a dependent key ending with `@each` is no longer supported. Please refactor from `Ember.computed('counters.@each', function() {});` to `Ember.computed('counters.[]', function() {})`.
Run Code Online (Sandbox Code Playgroud)

但如果我提出改变建议:

// app/services/my-service.js
... …
Run Code Online (Sandbox Code Playgroud)

ember.js computed-properties

5
推荐指数
1
解决办法
1830
查看次数

Sinatra-如何为统计目的计算每个请求的响应时间?

我想测量每个Sinatra路由的执行时间,包括完整的请求/响应周期持续时间,然后将此指标发送到Graphite服务器。

我的第一种方法是使用Rack::Runtime,然后从Sinatra after过滤器的响应标头中获取所需的值,但我发现此过滤器实际上是在将响应完全发送到客户端之前执行的。

因此,不仅我无法访问该after块中的许多响应信息,而且也无法使用该块以任何其他方式将指标发送给Graphite,因为它们无法反映实际的响应时间。

我在其他主题中读到,一种可能的方法是创建一个Rack中间件来包装应用程序并执行基准测试,结果如下:

class GraphiteRoutesReporter

  def initialize(app)
    @app = app
  end

  def call(env)
    start_time = Time.now
    status, headers, body  = @app.call(env)
    time_taken = (1000 * (Time.now - start_time))

    # send #{time_taken} to my stats server

    [status, headers, body]
  end
end
Run Code Online (Sandbox Code Playgroud)

我可以加入其中,config.ru并且看起来工作正常。

但是我担心此代码会与核心的Rack请求链混淆,并且我担心我没有正确使用Sinatra公共API。

哪种方法可以获取Sinatra请求的完整响应时间?

ruby rack sinatra

5
推荐指数
1
解决办法
586
查看次数