小编Kev*_*ker的帖子

MiniProfiler Ruby:获得非SQL调用的更好细分

我正在尝试使用Mini Profiler来描述我们的一些Rails控制器,但我想我正在尝试将它用于它不是为它构建的东西.我已经很好地分析了SQL查询,但我需要分解非SQL代码,因为我们在某些页面中看到了很多问题,但SQL似乎不是问题所在.

这是我正在谈论的截图:http://cl.ly/image/2J3i1C1c072O

您可以看到顶级(Executing action: show)需要9136ms才能完成,但执行的查询只是总时间的一小部分.我想我要问的是,是否有办法显示有关正在执行的代码的更多"详细"信息,或者我是否需要找到一个不同的工具来使用.不幸的是,New Relic不是一个选择.

谢谢你的帮助.

profiling ruby-on-rails-3 mvc-mini-profiler

4
推荐指数
1
解决办法
728
查看次数

Sinatra&HAML:为整个模板自动转义/转换不安全的HTML字符?

我有一个小的sinatra应用程序,我用来运行一个基本的网站.该网站的内容由客户提供,其中大部分来自PDF.因为我宁愿不必手动更换所有的<with &lt;&with &amp;,有没有办法配置HAML/Sinatra自动为我做?

基本上,我有一些看起来像这样的块:

%p
  large block of text here...
  multi-line so I can see it in my IDE...
  more lines here...
Run Code Online (Sandbox Code Playgroud)

我想找到一些配置选项,告诉HAML浏览所有内容并用他们的HTML实体对应物替换不安全的字符.

我尝试使用HTMLEntities gem,但这个网站有很多多行段落,我似乎无法让它工作.我的意思是我会在我的server.rb文件中做这样的事情:

def "/some_url"
  @encoder = HTMLEntities.new
  haml :some_template
end
Run Code Online (Sandbox Code Playgroud)

在我的模板中:

%p
  = @encoder.encode("Really long multiline string...
    some more lines here...
    and more lines...")
Run Code Online (Sandbox Code Playgroud)

它会吐出关于错过结账的错误).

html ruby haml sinatra

4
推荐指数
1
解决办法
1143
查看次数

React JS:调用setState后组件不更新

我有一个小小的反应应用程序,我正在玩,只是去了解图书馆.该应用程序只是一系列列表,从服务器填充.单击列表项时,该项的值将添加到应用级别的列表过滤器,然后将用于调用新数据以填充列表.

问题是我似乎无法使我的列表与应用程序(父级)中的新数据协调,即使在调用时也是如此setState.这是我的代码(咖啡):

### 
@jsx React.DOM
###

{div, h1, h2, h4, ul, li, form, input, br, p, strong, span, a} = React.DOM

SearchApp = React.createClass
  handleTopItemClick: (filter) ->
    facet = filter.field
    filters = @state.filters
    if filters.facets[facet] and filters.facets[facet].length > 0
      filters.facets[facet].push filter.value
    else 
      filters.facets[facet] = [filter.value]

    strArr = []
    _.each filters.facets, (valArr, field) ->
      _.each valArr, (val) ->
        strArr.push "+(#{field}:\"#{val}\")" 

    @setState 
      filters: filters
      queryStr: strArr.join(' ').trim()

  getInitialState: ->
    filters:
      facets: {}
    queryStr: ''    

  render: ->
    (div {
      id: 'content' …
Run Code Online (Sandbox Code Playgroud)

coffeescript reactjs

4
推荐指数
1
解决办法
7020
查看次数

Ruby:将两个数组的单个值分配到第三个数组中

我有两个数组:['x','y','z'][1,2].我如何在第三个数组中创建值对(作为字符串)?

所以我最终得到这个:

['x:1', 'x:2', 'y:1', 'y:2', 'z:1', 'z:2']
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

ruby arrays

4
推荐指数
1
解决办法
91
查看次数

Javascript:如何用功能更多的模式替换嵌套if / else?

我的React应用程序代码库中重复了以下模式:

const {items, loading} = this.props
const elem = loading
  ? <Spinner />
  : items.length
    ? <ListComponent />
    : <NoResults />
Run Code Online (Sandbox Code Playgroud)

尽管这肯定比嵌套实际 if/else子句更干净,但我正在尝试拥抱更优雅和实用的模式。我已经读过有关使用Eithermonad之类的东西的信息,但是我为之付出的所有努力最终看起来都更加冗长,并且可重用性较低(鉴于我想记住以前的尝试,该伪代码可能无法正常工作) :

import {either, F, isEmpty, prop} from 'ramda'
const isLoading = prop('loading')
const renderLoading = (props) => isLoading(props) ? <Spinner /> : false
const loadingOrOther = either(renderLoading, F)
const renderItems = (props) => isEmpty(props.items) ? <NoResults /> : <ListComponent />
const renderElem = either(loadingOrOther, renderItems)
const elems = renderElem(props)
Run Code Online (Sandbox Code Playgroud)

我可以使用哪种模式更干燥/可重用?

谢谢!

javascript monads functional-programming react-jsx ramda.js

4
推荐指数
2
解决办法
2729
查看次数

Rails:在params哈希上动态迭代以验证它们是否存在

我有一个表格,有很多参数被传递给控制器​​进行处理.params的不同"集合"以类似的方式命名:

setname1_paramname
setname1_paramname2
Run Code Online (Sandbox Code Playgroud)

现在,我需要检查其中一个"集合"以验证是否已提交所有字段.现在,我正在使用手动If或样式声明:

if setname1_paramname.blank? || setname1_paramname2.blank? || ...etc
  @object.errors.add_to_base("All setname1 fields are required.").
  render :action => 'new'
  return false
end
Run Code Online (Sandbox Code Playgroud)

有没有办法以编程方式循环这些参数,并将它们添加到@object错误?

谢谢!

ruby-on-rails

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

Rails:发布到Facebook用户的墙上

我们已经让用户将他们的Facebook帐户连接到我们的网站几个星期了,我已经被赋予了找到一种方式将消息(即广告)发布到他们的墙上的任务.

从本质上讲,将会有一个cron作业每天在指定的时间运行,这将使用我们的app秘密和他们的oauth2_token(我们存储)发布到用户的墙上.

我做了一些搜索,我发现了这篇文章:http: //ckdake.com/content/2010/posting-to-facebook-from-a-ruby-on-rails-app.html

但这似乎要求我重新授权用户.我目前只使用OAuth2 gem来完成我所有的Facebook连接,并将用户的令牌存储在他们的用户配置文件中.我宁愿不建立一个全新的模型,只是为了存储重复的信息.

那么,有没有人做过这样的事情?如果是这样,你能指出我正确的方向吗?谢谢

ruby-on-rails facebook-graph-api oauth-2.0

3
推荐指数
1
解决办法
3453
查看次数

Objective C - XCode无法识别if语句之外的变量

尝试使用if语句设置sprite文件名,然后根据该字符串加载正确的文件.看起来我的变量范围存在问题,但我不知道它是什么.

这是我的代码:

if ([[GameManager sharedGameManager] newHighScore] == TRUE) {
    NSString *highScoreLabelText = @"label-new-high-score.png"
} else {
    NSString *highScoreLabelText = @"label-high-score.png"
}

CCSprite *highScoreLabel = [CCSprite spriteWithSpriteFrameName:highScoreLabelText];
[highScoreLabel setAnchorPoint:ccp(0,0)];
[highScoreLabel setPosition:ccp(20, winSize.height * 0.575f)];
[self addChild:highScoreLabel];
Run Code Online (Sandbox Code Playgroud)

XCode正在标记错误,说highScoreLabelText是未声明的标识符,因此不会编译应用程序.我是否需要在NSString中声明其他内容以使其余代码与变量一起使用?

xcode scope objective-c cocos2d-iphone

3
推荐指数
1
解决办法
2966
查看次数

Underscore JS:减少到数组导致累加器上的未定义方法错误

我有与此类似的代码,我试图用它来生成一个由三个子数组组成的数组:

f = [1, 2.5, 3, 10]
p = [1.2, 5.1, 6.3, 11]
r = [1, 1, 1, 1]

coords = _.reduce([f, p, r], function(memo, series){
    if(series.length){
        memo.push(_.map(series, function(s, i){
            return {x: s, y: i*100};
        }));
    }
}, []);

console.log(coords);
Run Code Online (Sandbox Code Playgroud)

最终结果应如下所示:

[
  [{x:1,y:100},{x:2,y:2.5}...],
  [{x:1,y:12},{x:2,y:51}...]
]
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试执行代码时,它会返回cannot read property push of undefined.当我检查Chrome中的错误时,它指向我的memo.push行.代码对我来说似乎没问题,但我无法弄清楚我的错误在哪里.任何帮助表示赞赏.

javascript arrays reduce underscore.js

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

Javascript:在树中深度查找对象,然后通过树返回对象及其路径

我有一个看起来像这样的数据结构:

let tree = {
  id: 1,
  name: "Some Name",
  children: [
    {
      id: 2,
      name: "Child 1",
      children: [...more nested objects...]
    }
  ]
};
Run Code Online (Sandbox Code Playgroud)

我已经编写了一个递归函数来查找该树中的给定对象,但我现在还需要将通过树的路径返回到返回的对象。我想弄清楚如何修改我的搜索功能来做到这一点。

搜索功能:

_findInTree = (id, tree) => {
    let result;
    if (tree.id === id) {
      result = tree;
    } else {
      for (let child of tree.children) {
        if (child.id === id) { result = child; }
        result = this._findInTree(id, child);
        if (result) { break; }
      }
    }
    return result;
  }
Run Code Online (Sandbox Code Playgroud)

javascript tree

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