您可以用什么方式在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
在为网站中的特定页面编写javascript时,您何时想将javascript转换为函数并将其包含在内application.js?
我已经看到了关于这样做(以及缩小或gzip-ing)的建议,以最小化HTTP请求.这是有道理的,但可维护性呢?如果我有一个特定于一个视图的js代码,那么看起来更有意义的是看一个潜在的大量application.js.该代码可以嵌入到该视图中,也可以放在该视图文件夹中的自己的.js(.js.erb或.rjs)文件中.
我已经看到另一个建议,Rails会自动将所有javascript合并到一个文件中.这是真的?
TLDR:开发人员在编写javascript时担心优化需要多少或多少?
我有一个可以正常运行的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
我安装了一些插件,包括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中测试它也具有相同的行为.
任何人都可以弄清楚这里发生了什么?我能够以我想要的方式使我的代码工作,但我无法弄清楚为什么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应该如何工作?
我有以下场景:
我需要在一个非常大的集合中找出唯一的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) 我在这个代码片段的gem中得到了上述错误
Savon.configure do |config|
config.log = false
config.log_level = :error
HTTPI.log = false
end
Run Code Online (Sandbox Code Playgroud)
这段代码用于传递Travis的过去运行,所以当我改变自述文件时,我不确定为什么这会改变.
我想将一个正则表达式替换全局应用于目录中和目录下的大约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中运行它,则根据上面的脚本无效.
谁能看到我可能会失踪的东西?
我在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) 我正在开始研究用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 ×3
vim ×2
activerecord ×1
coffeescript ×1
commenting ×1
comments ×1
gem ×1
javascript ×1
jruby ×1
optimization ×1
performance ×1
regex ×1
replace ×1
ruby-1.9.2 ×1
rvm ×1
savon ×1
scripting ×1
sinatra ×1