小编Eri*_* Hu的帖子

我如何在CoffeeScript中发表评论?"/*this*/"不起作用

您可以用什么方式在CoffeeScript中发表评论?

文档说您可以使用三个哈希符号来启动和关闭注释块:

###
  Comments
  go
  here
###
Run Code Online (Sandbox Code Playgroud)

我发现我有时可以使用以下两种格式

`// backticks allow for straight-JavaScript,
 // but the closing backtick can't be on a comment line (I think?)
`
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法在CoffeeScript中插入简短的注释?

不要使用这种风格**

由于这得到了很多观点,我想强调一下

/* Comment goes here */
Run Code Online (Sandbox Code Playgroud)

/*它在自己的行上时产生MATH错误.

正如特雷弗在对这个问题的评论中指出的那样,这是一个正则表达式,而不是评论!

comments code-formatting commenting block-comments coffeescript

140
推荐指数
2
解决办法
7万
查看次数

Rails 3:在哪里放javascript的好经验法则?

在为网站中的特定页面编写javascript时,您何时想将javascript转换为函数并将其包含在内application.js

我已经看到了关于这样做(以及缩小或gzip-ing)的建议,以最小化HTTP请求.这是有道理的,但可维护性呢?如果我有一个特定于一个视图的js代码,那么看起来更有意义的是看一个潜在的大量application.js.该代码可以嵌入到该视图中,也可以放在该视图文件夹中的自己的.js(.js.erb.rjs)文件中.

我已经看到另一个建议,Rails会自动将所有javascript合并到一个文件中.这是真的?

TLDR:开发人员在编写javascript时担心优化需要多少或多少?

javascript optimization ruby-on-rails-3

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

Rails 3.1:无法在添加它的同一个迁移中写入列

我有一个可以正常运行的add_column迁移.但是,在运行它并启动控制台后,我会发现first_name和last_name列完全为空.我尝试使用save!而且它具有相同的效果 - 没有报告错误.这是原始的:

class UserAddFirstNameAndLastName < ActiveRecord::Migration
  def change
    # add column first name, last name string
    add_column :users, :first_name, :string
    add_column :users, :last_name, :string

    User.all.each do |u|
      u.first_name = 'first name'
      u.last_name = 'last name'
      u.save
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我还认为这可能是一些类加载问题,所以我插入行User以强制用户类在循环之前重新加载.没有骰子.

当我将其拆分为两次迁移时,实现了期望的效果.有人对此有解释吗?我发誓我甚至在过去迁移的同一个项目中做过这个.

其他说明:设计用户引擎,attr_accessible在运行迁移之前将新列添加到User类中.

activerecord ruby-on-rails rails-migrations ruby-on-rails-3 rails-activerecord

23
推荐指数
1
解决办法
4927
查看次数

Vim和GVim:领导关键不起作用

我安装了一些插件,包括NERDCommenter和NERDTree.但是,我不能让领导者的钥匙适合他们.这是我输入时的默认配置:map

v  \c<Space>     <Plug>NERDCommenterToggle
n  \c<Space>     <Plug>NERDCommenterToggle
v  \cc           <Plug>NERDCommenterComment
n  \cc           <Plug>NERDCommenterComment
Run Code Online (Sandbox Code Playgroud)

\c<space>就像打击一样c<space>.我已尝试.vimrc在我的主目录中使用以下内容重新映射领导者密钥:

let mapleader = ","
Run Code Online (Sandbox Code Playgroud)

这在我重新启动vim并输入时反映出来 :map

v  ,c<Space>     <Plug>NERDCommenterToggle
n  ,c<Space>     <Plug>NERDCommenterToggle
v  ,cc           <Plug>NERDCommenterComment
n  ,cc           <Plug>NERDCommenterComment
Run Code Online (Sandbox Code Playgroud)

但是,,c<space>只是表现得像我正在打c<space>.发生了什么,我该如何解决这个问题?

编辑:在VIM中测试它也具有相同的行为.

vim

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

validates_associated不检查关联的存在

任何人都可以弄清楚这里发生了什么?我能够以我想要的方式使我的代码工作,但我无法弄清楚为什么validates_associated没有按照我的预期工作.这是我的代码片段:

class Flag < ActiveRecord::Base
  belongs_to :user
  belongs_to :post

  # allow only one flag per post per user
  validates_uniqueness_of :user_id, :scope => :post_id

  validates :user_id, :post_id, :presence => true
  validates_associated :user, :post

  attr_accessible :user_id, :post_id
end
Run Code Online (Sandbox Code Playgroud)

使用此代码,我无法使用user_id == nil保存标志.我可以使用user_id == 12345保存一个标志(即某些user_id不在数据库中).这就是validates_associated API规范所说的:

validates_associated(*attr_names)

验证关联的对象是否全部有效.适用于任何类型的协会.
...
注意:如果尚未分配关联,则此验证不会失败.如果要确保关联存在且保证有效,则还需要使用validates_presence_of.

我能够通过使用它来获得所需的行为,而不是:

  validates :user, :post, :presence => true
Run Code Online (Sandbox Code Playgroud)

我对API规范的理解是validates_associated检查关联的表以查看是否存在具有与Flag 的外键匹配的行,前提是外键是非nil.任何人都可以对此提出任何见解吗?我误解了validates_associated应该如何工作?

ruby-on-rails validates-associated

12
推荐指数
1
解决办法
7478
查看次数

红宝石中的大数组操作非常慢

我有以下场景:

我需要在一个非常大的集合中找出唯一的id列表.

例如,我有6000个ID数组(关注者列表),每个数据的大小范围在1到25000之间(他们的关注者列表).

我希望在所有这些ID数组中找到唯一的id列表(追随者的独特关注者).一旦完成,我需要减去另外一个列表(另一个人跟随者列表)的ID并获得最终计数.

最后一组独特的ID增长到大约60,000,000条记录.在ruby中将数组添加到大数组时,它开始变得非常慢,只有几百万.添加到设置首先需要0.1秒,然后增加到超过4秒,达到200万(没有我需要去的地方).

我在java中编写了一个测试程序,它在不到一分钟的时间内完成了整个过程.

也许我在红宝石中效率低下,或者有另一种方式.由于我的主要代码是专有的,我编写了一个简单的测试程序来模拟问题:

big_array = []
loop_counter = 0
start_time = Time.now
# final target size of the big array
while big_array.length < 60000000
 loop_counter+=1
 # target size of one persons follower list
 random_size_of_followers = rand(5000)
 follower_list = []
 follower_counter = 0
   while follower_counter < random_size_of_followers
     follower_counter+=1
     # make ids very large so we get good spread and only some amt of dupes
     follower_id = rand(240000000) + 100000
     follower_list << follower_id
   end
 # combine the big …
Run Code Online (Sandbox Code Playgroud)

ruby performance jruby

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

Savon的未定义方法`configure':模块

我在这个代码片段的gem中得到了上述错误

Savon.configure do |config|
  config.log = false
  config.log_level = :error
  HTTPI.log = false
end
Run Code Online (Sandbox Code Playgroud)

这段代码用于传递Travis的过去运行,所以当我改变自述文件时,我不确定为什么这会改变.

ruby gem savon

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

使用脚本将正则表达式替换全局应用于许多文件

我想将一个正则表达式替换全局应用于目录中和目录下的大约40个Javascript文件.我是一个vim的用户,但手工做这可能是乏味且容易出错,所以我想将它与脚本自动化.

我试过SED,但每次处理一个以上的线是尴尬,尤其是如果没有限制多少行的模式可能匹配.

我也试过这个脚本(在一个文件上,用于测试):

ex $1 <<EOF
gs/,\(\_\s*[\]})]\)/\1/
EOF
Run Code Online (Sandbox Code Playgroud)

图案将消除任何的Perl/Ruby的样式列表的后逗号,使"[A,B,C,]"将在次序出来为"[A,B,C]",以满足Internet Explorer中,其中单独在浏览器中,这些列表上的扼流圈.

该模式在vim中运行得非常漂亮,但如果我在ex中运行它,则根据上面的脚本无效.

谁能看到我可能会失踪的东西?

regex vim scripting replace

7
推荐指数
2
解决办法
2176
查看次数

Rails 3.1不重新加载更改的视图

我在Ruby 1.9.2应用程序中看到了一个错误/功能.对视图(而不是ruby文件)的任何更改都需要重新启动服务器.我最初在Rails应用程序中遇到过这个问题,但我也在最小的Sinatra应用程序中测试了同样的东西.

我将包含一个简单的应用程序来演示

# testapp.rb
require 'sinatra'

get '/' do
  [0,1,2].to_s  #change this to [0,1].to_s
end
Run Code Online (Sandbox Code Playgroud)

这是我的程序:

  • ruby testapp.rb (为我运行瘦服务器)
  • 加载页面
  • 打开文件并编辑视图
  • 重新加载页面(我看不到任何更改)
  • 杀死服务器
  • 重启服务器(现在可见更改)

在过去的几个月里,我一直在使用Rails 3上的Ruby 1.8.7开发.必须在任何视图更改时重新启动服务器会严重降低开发速度.

我已经准备好了这个SO线程,但是在我的Rails版本(3.1.0 rc4)中,配置变量已根据该答案设置.另外,我可以使用Sinatra复制错误,因此看起来并非如此.

任何人都可以解释这个问题吗?

Ruby版本:ruby 1.9.2p180(2011-02-18修订版30909)[x86_64-linux]服务器:瘦1.2.11(也用Sinatra/Webrick测试过)

编辑7/13,澄清 Sinatra是一个单独的问题 - 默认情况下禁用Sinatra的源重新加载.我用这段代码来测试行为:

require 'sinatra'
require 'sinatra/reloader'
require 'haml'

set :views, 'views'

get '/' do
end

get '/test' do
  haml :test
end
Run Code Online (Sandbox Code Playgroud)

有了这个,我做了一个文件:views/test.haml.在服务器运行时修改它确实在重新加载页面时显示更改.感谢Tiredpixel指出这一点

未解决的问题:为什么Ruby 1.9.2上的Rails 3.1没有重新加载视图?我能够加载ruby文件,但不能加载haml和erb文件.我最终重新启动服务器只是为了查看错误是否实际修复(或未修复),因为文件未正确加载.

编辑/解决方案(从我在接受的答案中的评论中复制):

问题在于 config/environments/development.rb

config.cache_classes = false
Run Code Online (Sandbox Code Playgroud)

即使我们检查了这是正确的,我们仍然有问题.我们在文件中进一步向下:

config.threadsafe! …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails sinatra ruby-1.9.2

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

RVM:创建一个不从全局继承的gemset?

我正在开始研究用Rails 2编写的项目.看起来它需要一个旧版本的Rake,这是我在Ruby 1.8.7的全局gemset中.我想避免为这个应用程序卸载全局1.8.7 rake.

无论如何我可以创建一个忽略全局gemset的gemset吗?

编辑:我想避免的最明显的解决方案是从全局gemset中卸载gem.在我的特殊情况下,我开始对遗留应用程序进行一些工作.它打破了rake 0.9.3和我的调试宝石(awesome_print,hirb,wirb等)之类的宝石.虽然我目前的解决方案(在下面的评论中)是一个黑客,但它似乎是我想要的最少量的工作.我希望有一些我不知道的gemset异常命令.

ruby ruby-on-rails rvm

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