小编Bra*_*cil的帖子

使用rbenv在Mac上安装ruby 2.0.0-p195时出现OpenSSL错误

我正在尝试在Mac(Mountain Lion)上使用rbenv安装Ruby 2.0.0-p195并出现此错误.

BUILD FAILED

Inspect or clean up the working tree at /var/folders/vt/27n8h2yj27v7rzq58075f3_m0000gn/T/ruby-build.20130618163859.1669
Results logged to /var/folders/vt/27n8h2yj27v7rzq58075f3_m0000gn/T/ruby-build.20130618163859.1669.log

Last 10 log lines:
installing default gems:      /Users/me/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0 (build_info, cache, doc, gems, specifications)
                              bigdecimal 1.2.0
                              io-console 0.4.2
                              json 1.7.7
                              minitest 4.3.2
                              psych 2.0.0
                              rake 0.9.6
                              rdoc 4.0.0
                              test-unit 2.0.0.0
The Ruby openssl extension was not compiled. Missing the OpenSSL lib?
Run Code Online (Sandbox Code Playgroud)

当我运行brew install openssl时,它说

Warning: openssl-1.0.1e already installed
Run Code Online (Sandbox Code Playgroud)

关于这个线程的解决方案https://github.com/sstephenson/ruby-build/issues/305我尝试以这种方式安装最新的稳定版并得到相同的错误

env CFLAGS='-g -O2' RUBY_CONFIGURE_OPTS="--with-readline-dir=`brew --prefix readline`" rbenv install 2.0.0-p195
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

ruby homebrew rbenv

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

在webpack中使用d3.js作为外部

我正在使用本教程使用webpack设置React.js项目.下面的webpack.config.js几乎是一个精确的副本(除了我使用的是app'dist'文件夹),我还添加了d3.js作为external.因为React被添加为external允许我require('react')在我的任何应用程序文件中执行而不将其包含在捆绑包中.我希望做同样d3.js的事情,并将其安装为node_module,并将其列在我的webpack配置的外部区域,但是当我这样做时,require('d3')我收到一条错误消息,表明它不可用.

d3如果我将它安装为node_module,我如何使用(或jQuery)作为外部?

这是我的项目设置

/app
/dist
/node_modules
package.json
webpack.config.js
Run Code Online (Sandbox Code Playgroud)
module.exports = {
    entry: './app/index.jsx',
    output: {
        path: './dist',
        filename: 'bundle.js', //this is the default name, so you can skip it
        //at this directory our bundle file will be available
        //make sure port 8090 is used when launching webpack-dev-server
        publicPath: 'http://localhost:8090/assets'
    },
    module: {
        loaders: [
            {
                //tell webpack to use jsx-loader for all *.jsx files
                test: …
Run Code Online (Sandbox Code Playgroud)

d3.js webpack

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

Rails:捕获方法

以下代码来自Ryan Bates的RailsCasts,他将博客的首页转换为日历,以便文章在日期显示为链接.以下辅助模块创建日历.我对这段代码有两个问题

  1. 在该day_cell方法中,他使用了一种名为的方法capture.我在其上找到了一些文档,但我仍然无法弄清楚捕获在这种情况下是如何工作的.那么&callback,作为一个参数被捕获的是什么?是否与:callback传递给Struct.new 的相同?如果是这样,它如何进入捕获?什么是:传递给Struct的回调?

    def day_cell(day)
      content_tag :td, view.capture(day, &callback), class: day_classes(day)
    end
    
    Run Code Online (Sandbox Code Playgroud)

源代码

module CalendarHelper
  def calendar(date = Date.today, &block)
    binding.pry
    Calendar.new(self, date, block).table

  end

  class Calendar < Struct.new(:view, :date, :callback)
    HEADER = %w[Sunday Monday Tuesday Wednesday Thursday Friday Saturday]
    START_DAY = :sunday

    delegate :content_tag, to: :view

    def table
      content_tag :table, class: "calendar" do
        header + week_rows
      end
    end

    def header
      content_tag :tr do
        HEADER.map { |day| content_tag :th, …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails

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

如何将排序移动到数据库级别

我有一个Rails应用程序,它使用postgresql作为数据库,按位置对不同类型的用户进行排序,然后根据网站上各种活动收到的信誉点进行排序.这是一个示例查询

 @lawyersbylocation = User.lawyers_by_province(province).sort_by{ |u| -u.total_votes }
Run Code Online (Sandbox Code Playgroud)

该查询在User.rb模型上调用范围lawyers_by_province:

 scope :lawyers_by_province, lambda {|province|
  joins(:contact).
  where( contacts: {province_id: province},
         users: {lawyer: true})

  }
Run Code Online (Sandbox Code Playgroud)

然后,仍然在User.rb模型上,它计算他们拥有的声誉点.

 def total_votes
    answerkarma = AnswerVote.joins(:answer).where(answers: {user_id: self.id}).sum('value') 
    contributionkarma = Contribution.where(user_id: self.id).sum('value')
    bestanswer = BestAnswer.joins(:answer).where(answers: {user_id: self.id}).sum('value') 
    answerkarma + contributionkarma + bestanswer
 end
Run Code Online (Sandbox Code Playgroud)

我被告知如果网站达到一定数量的用户,那么它将变得非常慢,因为它在Ruby而不是在数据库级别进行排序.我知道注释是指total_votes方法,但我不确定lawyers_by_province是在数据库级别还是在ruby中发生,因为它使用Rails帮助程序来查询数据库.看起来像两者兼而有之,但我不确定这对效率的影响.

你能告诉我如何写这个,以便查询发生在数据库级别,因此以更有效的方式不会破坏我的网站?

更新以下是total_votes方法中模型的三种方案.

 create_table "answer_votes", force: true do |t|
    t.integer  "answer_id"
    t.integer  "user_id"
    t.integer  "value"
    t.boolean  "lawyervote"
    t.boolean  "studentvote"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  add_index "answer_votes", ["answer_id"], name: "index_answer_votes_on_answer_id", using: :btree
  add_index "answer_votes", ["lawyervote"], name: "index_answer_votes_on_lawyervote", …
Run Code Online (Sandbox Code Playgroud)

postgresql performance ruby-on-rails

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

测试代码为es6编译

我准备用Qunit编写一些测试用于为ES6编写的Backbone应用程序,并将babel.js应用于它,以便它可以在当代浏览器中运行.为了确保我已正确设置qunit并正确指定所有路径,我首先测试了用ES5编写的Backbone模型,一切都按预期工作.但是,我随后将bundle.js(包含我的ES6代码的结果与babel.js应用于它)包括在内tests/index.html,并写入

 test ( "Code transformed by babel.js contained in bundle.js can be tested", function(){
    expect(1);
    var es6model = new ES6Model();
    equal( es6model.get("defaultproperty"), "defaultstring", "defaultproperty should be defaultstring");
 })
Run Code Online (Sandbox Code Playgroud)

它告诉我ES6Model没有定义.

问题:有什么关于babeljs转换的代码会使使用Qunit进行测试更具挑战性吗?

除了babel在文件顶部写的所有复杂js之外,代码bundle.js看起来像这样

var Model = Backbone.Model;
var View = Backbone.View;
var Collection = Backbone.Collection;
var Router = Backbone.Router;
var LocalStorage = Backbone.LocalStorage;

var ES6Model = (function (Model) {
    function ES6Model() {
        _classCallCheck(this, ES6Model);

        if (Model != null) {
            Model.apply(this, arguments);
        }
    }

    _inherits(ES6Model, …
Run Code Online (Sandbox Code Playgroud)

javascript qunit ecmascript-6 babeljs

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

如何在React中附加到dom?

这是一个js小提琴, 显示了行动中的问题.

在组件的渲染功能中,我使用类渲染div .blah.在componentDidMount同一个组件的功能中,我希望能够选择类.blah并像这样附加到它(因为组件已经安装)

$('.blah').append("<h2>Appended to Blah</h2>");
Run Code Online (Sandbox Code Playgroud)

但是,附加的内容不会显示.我也试过(也在小提琴中显示)以相同的方式追加但是从父组件追加到具有相同结果的子组件,并且也从子组件追加到具有相同结果的父组件的空间中.我尝试后者的逻辑是,人们可以更加确定dom元素已被渲染.

与此同时,我能够(在componentDidMount函数中)getDOMNode和追加到那个

 var domnode = this.getDOMNode(); 
 $(domnode).append("<h2>Yeah!</h2>")
Run Code Online (Sandbox Code Playgroud)

然而,我想用CSS样式做理由我希望能够附加一个我知道的类的div.此外,由于根据文档 getDOMNode被弃用,并且不可能使用替换getDOMNode来做同样的事情

 var reactfindDomNode = React.findDOMNode();
 $(reactfindDomNode).append("<h2>doesn't work :(</h2>");
Run Code Online (Sandbox Code Playgroud)

我不认为getDOMNode或是findDOMNode正确的方式来做我想做的事情.

问题:是否可以在React中附加到特定的ID或类?我应该用什么方法来完成我想要做的事情(getDOMNode即使它被弃用了?)

var Hello = React.createClass({
    componentDidMount: function(){

       $('.blah').append("<h2>Appended to Blah</h2>");
       $('.pokey').append("<h2>Can I append into sub component?</h2>");
       var domnode = this.getDOMNode();
       $(domnode).append("<h2>appended to domnode but it's actually deprecated so what do I use instead?</h2>")

       var reactfindDomNode = …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

10
推荐指数
2
解决办法
6万
查看次数

unmarshal嵌套json,不知道结构

我使用键值存储作为我的golang应用程序的后端,日期用作键(保持条目排序)和json文档作为值.的JSON的顶层名字空间(foo),并且typedate 都存在我存储但除此之外也有一些差异(特别是相对于一些嵌套JSON数据),每个JSON文档中,因此,当keyI'm从数据库中提取,我真的不知道我在循环中随时都会拔出什么东西.以下是json数据的示例

{ "foo": { "id":"124", "type":"baz", "rawdata":[123, 345,345],"epoch": "1433120656704"}}
{ "foo" : { "id":"234", "type":"bar", "rawdata":[{"key":"dog", "values":[123,234]}, {"key":"cat", "values":[23, 45]}], "epoch":"1433120656705"}}
Run Code Online (Sandbox Code Playgroud)

当我从数据库中取出时,我要做的第一件事就是将每个条目解组为一个map[string]*json.RawMessage来处理foo命名空间

//as I'm looping through the entries in the database
   var objmap map[string]*json.RawMessage
   if err := json.Unmarshal(dbvalue, &objmap); err !=nil{
       return err
   }
Run Code Online (Sandbox Code Playgroud)

我感谢这个答案

然而,与那个SO答案不同,当我必须再次解组foo命名空间中包含的内容时,我不知道将哪个结构解组为

   if err :=json.Unmarshal(*objmap["foo"], &bazorbar; err != nil{
         return err
   }

 type Baz struct{
  Id string `json:"id"`
  Type string `json:"type"`
  RawData []int …
Run Code Online (Sandbox Code Playgroud)

go

8
推荐指数
1
解决办法
9187
查看次数

"这个"在Javascript函数中引用了什么

我理解this关键字背后的一般想法,但我无法弄清楚它在实践中实际指的是什么.例如,在这两个示例练习中,我猜错了数字.

对于question1,我说警报会是'5',因为它指的是函数中匿名函数之外的this.x.

在问题2中,我认为警报将是5,因为这一行

var alertX = o.alertX;
Run Code Online (Sandbox Code Playgroud)

将变量o中的属性x的值5绑定到新变量'alertX',它将成为下一行中的函数调用:alertX();

你能解释我为什么错吗?

var question1 = function() {
    this.x = 5;
     (function() {
        var x = 3;
        this.x = x;
    })();
    alert(this.x);
};
var answer1 = 3; 


var question2 = function() {
    this.x = 9;
    var o = {
        'x':5,
        'alertX':function() { alert(this.x); }
    };
    var alertX = o.alertX;
    alertX();
}
var answer2 = 9; 
Run Code Online (Sandbox Code Playgroud)

javascript

7
推荐指数
1
解决办法
971
查看次数

backbone.history.loadURL

在backbone.js网站上没有关于Backbone.history.loadURL的文档http://backbonejs.org/#History-start 虽然我已经大致了解它在我看过的一些应用程序中产生了什么结果,但我并不完全是确定它是如何工作的,从它选择加载的URL和它如何知道加载某个URL到另一个URL.谁能解释一下?

$.ajax({
                url: "json/Backboneapp_data.json",
                dataType: 'json',
                data: {},
                async: false,
                success: function (data)
                {

                    _this._data = data;
                    _this._items = new ItemCollection(data);
                    _this._view = new MenuView({ model: _this._items });
                    _this._view.render();
                    Backbone.history.loadUrl();
                }

            });
Run Code Online (Sandbox Code Playgroud)

javascript backbone.js

7
推荐指数
1
解决办法
6451
查看次数

postgres搜索查询错误,如果使用空间

我跟随Ryan Bates的Railscast跟Postgres进行全文搜索,然而,他正在使用postgres 9.1而我正在使用9.2.他构建以下查询以执行搜索.如果我的查询是单个单词,例如"超人",但如果它是两个单词,例如dc comics,或者super man,我收到此错误,这对于postgres来说是新手,我无法弄清楚如何修复它对我有用.你能帮忙吗?

PG::Error: ERROR:  syntax error in tsquery: "super man"
LINE 1: ...articles"  WHERE (to_tsvector('english', name) @@ 'super man...
                                                             ^
: SELECT  "articles".* FROM "articles"  WHERE (to_tsvector('english', name) @@ 'super man' or to_tsvector('english', content) @@ 'super man') ORDER BY       ts_rank(to_tsvector(name), plainto_tsquery('super man')) +
      ts_rank(to_tsvector(content), plainto_tsquery('super man'))
 desc LIMIT 3 OFFSET 0
Run Code Online (Sandbox Code Playgroud)

来自Article.rb的查询

 def self.text_search(query)
    if query.present?
      rank = <<-RANK
      ts_rank(to_tsvector(name), plainto_tsquery(#{sanitize(query)})) +
      ts_rank(to_tsvector(content), plainto_tsquery(#{sanitize(query)}))
    RANK

  where("to_tsvector('english', name) @@ :q or to_tsvector('english', content) @@ …
Run Code Online (Sandbox Code Playgroud)

postgresql ruby-on-rails

7
推荐指数
1
解决办法
3622
查看次数