小编nfm*_*nfm的帖子

什么是"Ruby方式"一次迭代两个数组

更多的语法好奇心而不是要解决的问题......

我有两个长度相等的数组,并希望一次迭代它们 - 例如,在某个索引处输出它们的值.

@budget = [ 100, 150, 25, 105 ]
@actual = [ 120, 100, 50, 100 ]
Run Code Online (Sandbox Code Playgroud)

我知道我可以each_index像这样使用和索引数组:

@budget.each_index do |i|
  puts @budget[i]
  puts @actual[i]
end
Run Code Online (Sandbox Code Playgroud)

有没有Ruby方法可以更好地做到这一点?这样的东西?

# Obviously doesn't achieve what I want it to - but is there something like this?
[@budget, @actual].each do |budget, actual|
  puts budget
  puts actual
end
Run Code Online (Sandbox Code Playgroud)

ruby arrays iterator

124
推荐指数
6
解决办法
5万
查看次数

如何跳过"git commit --amend"中的提交消息步骤?

我正在运行一个非常快速的代码编译测试循环,我经常修改我的提交更改.

例如:

# Make some changes
$ git commit -m "Added feature X"
# Compile, test
# Fix bugs
$ git commit -a --amend
Run Code Online (Sandbox Code Playgroud)

修复bug后,我通常需要相同的提交消息.有没有办法让git跳过我的EDITOR只是使用原始提交消息?

git version-control commit-message

75
推荐指数
4
解决办法
9320
查看次数

如何在Rails中提交布尔参数?

我正在提交一个show_all带有值的参数true.该值与模型无关.

我的控制器将此参数分配给实例变量:

@show_all = params[:show_all]
Run Code Online (Sandbox Code Playgroud)

然而,@show_all.is_a? Stringif @show_all == true总是失败.

Rails解析为布尔值有什么价值?如何明确指定我的参数是布尔值,而不是字符串?

parameters parsing boolean ruby-on-rails

69
推荐指数
4
解决办法
6万
查看次数

我的vimrc中的映射<C-Tab>在Ubuntu中失败

我想将ctrl-tab映射到:tabn,并将ctrl-shift-tab映射到:tabp.

我让它在Windows XP中用于gVim,但在Ubuntu 9.10中将它移动到我的.vimrc并且它不起作用(vim 7.2).

这是我的.vimrc的相关部分:

nmap <C-Tab> :tabn<CR>
nmap <C-S-Tab> :tabp<CR>
nmap <C-t> :tabnew<CR>
Run Code Online (Sandbox Code Playgroud)

<C-t>工作正常,所以映射ctrl键似乎不是一个问题.我真的不知道从哪里开始!这可能会出现什么问题,考虑到它在Windows下运行良好?

更多信息:我正在运行Ubuntu 9.10服务器,xorgfluxbox安装在顶部.我正在使用xterm我的终端.

Ctrl-tab映射在fluxbox中工作:可以在窗口管理器中成功映射ctrl-tab和ctrl-shift-tab; 如果我开始标记我的xterms,我可以按预期循环浏览这些标签.我不确定这意味着什么,但我认为问题不是窗口管理器/ xorg问题.

这些键似乎没有映射到别的东西,并且可以一起成功识别.

答:这是一个xterm问题 - 它不会拦截并发送一个唯一的密钥代码ctrl-tab.有关详情,请参阅下面的完整答案.

vim keyboard-shortcuts keymapping

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

在进行手动合并后,我应该在提交消息中删除冲突列表吗?

假设我运行git pull并且存在git无法自动合并的冲突.

在我手动合并更改并运行之后git commit,是否应该保留Conflicts:git在提交中生成的部分(作为手动合并这些文件的记录),或者将其删除(因为冲突未提交)?

我不知道最佳做法是什么 - 是否有警告确保您修复冲突,或实际登录提交消息?

git commit-message

19
推荐指数
1
解决办法
2070
查看次数

如何加入NSSet的元素来创建NSString?

如果我有一个NSSetNSString对象,我怎么能加入他们的行列,共同创建一个单一的NSString

objective-c nsstring nsset

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

无法让bundle exec在生产中工作

我已经在生产中安装了我的宝石:

cd /app/releases/current && bundle install --gemfile /app/releases/current/Gemfile --path /app/shared/bundle --deployment --quiet --without development test
Run Code Online (Sandbox Code Playgroud)

我不能bundle exec用我的任何宝石(除了rakegem):

$ bundle exec whenever
bundler: command not found: whenever
Install missing gem executables with `bundle install`
Run Code Online (Sandbox Code Playgroud)

宝石正确安装在/ app/shared/bundle中:

$ cd /app/shared
$ find . -name whenever
./bundle/ruby/1.9.1/gems/whenever-0.6.8/bin/whenever
./bundle/ruby/1.9.1/gems/whenever-0.6.8/lib/whenever
Run Code Online (Sandbox Code Playgroud)

我的(生成的)bundle配置(在/app/current/.bundle/config中)是:

---
BUNDLE_FROZEN: "1"
BUNDLE_PATH: /app/shared/bundle
BUNDLE_DISABLE_SHARED_GEMS: "1"
BUNDLE_WITHOUT: development:test
Run Code Online (Sandbox Code Playgroud)

我正在运行ruby 1.9.2p290,手动安装到/ usr/local/bin.

我有选择的bundle install宝石--binstubs吗?为什么不bundle exec搜索存储的BUNDLE_PATH

rubygems ruby-on-rails bundler

16
推荐指数
2
解决办法
9026
查看次数

你如何在Rails 3.1中用Sprockets编写DRY,模块化coffeescript?

我正处于尝试编写一些合理的Javascript的早期阶段.我想基本上命名我的应用程序名称下的所有东西以尽可能避免全局变量,但仍然给我一种方法来访问在该地方声明的函数.但是,我不想在我的函数定义中超级冗长.

我理想的CoffeeScript会是这样的:

class @MyApp
  @myClassMethod = ->
    console.log 'This is MyApp.myClassMethod()'

  class @Module1
    @moduleMethod = ->
      console.log 'This is MyApp.Module1.moduleMethod()'
Run Code Online (Sandbox Code Playgroud)

你得到了照片.这样我就可以避免在MyApp.Module.submoduleMethod = ->每次想要正确定义命名空间函数时编写- 我的类定义中使用@和定义事物可以保持简洁.

这一切都很顺利,直到我想将我的功能分成多个CoffeeScript文件.然后我真正想要的是这样的:

// application.js
class @MyApp
  //= require 'module1'
  //= require 'module2'

// module1.js
class @Module1
  @moduleMethod = ->
    console.log 'This is STILL MyApp.Module1.moduleMethod()'
Run Code Online (Sandbox Code Playgroud)

似乎Sprockets不能做到这一点.

是否有一种明智的方法可以将我的CoffeeScript文件放在容器文件中的正确位置?或者另一种方法来编写使用CoffeeScript,Sprockets和Rails 3.1划分为单独文件的模块化代码?

ruby-on-rails coffeescript javascript-namespaces ruby-on-rails-3.1 sprockets

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

Rails:如何在我的模型中调用`self.save`并将其保留在数据库中?

我正在尝试将模型逻辑保留在我的模型中,但是我无法让它对自身执行修改并让它们在数据库中保留.

在我的控制器中:

@article.perform_some_calulcations!
Run Code Online (Sandbox Code Playgroud)

在我的模型中:

def perform_some_calculations!
  self.foo.gsub!(/regexp/, 'string')
  self.save
end
Run Code Online (Sandbox Code Playgroud)

如果我将debugger语句删除到我的方法中并在控制器中调用它之后,则@article.foo具有正确的值.但是,当我继续时,它不会在数据库中保留,webrick不会报告任何UPDATE语句.

出了什么问题?我不知道我以前是否曾经这样做过,但肯定有可能吗?

activerecord persistence ruby-on-rails

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

我应该如何为生产中的宝石管理二进制依赖项?

Bundler在部署时确保安装了所有正确的gem,这是一项非常棒的工作.

但是,有些宝石依赖于二进制文件(例如Paperclip依赖于ImageMagick,PDFKit依赖于wkhtmltopdf),可能会也可能不会安装在正在部署的系统上.

我最近被这两次咬过,需要弄清楚防止它再次发生的最佳方法.

有没有一种好方法可以确保安装这些外部二进制文件和库?捆绑商是否有任何支持?我应该修改我的capistrano部署脚本吗?我应该在我的存储库中包含二进制文件并确保宝石在正确的位置查找它们吗?

我可以想办法解决这个问题,但想知道你认为最好的方法,以及原因.

rubygems ruby-on-rails dependency-management bundler ruby-on-rails-3

12
推荐指数
2
解决办法
798
查看次数