标签: ruby

如果Java人员去Scala,C#去F#,Ruby人们去哪里寻找功能性的必杀技?

我知道很多Java人已经开始关注Scala,因为它在JVM上运行,而且微软世界的很多人都在关注F#,但是Ruby有什么作为自然的功能继承者呢?

在纯粹的FP意义上,Ruby并不缺少任何东西,相反,有些人可能会说太多了.函数式语言迫使程序员不要使用全局变量和其他习语(尽管可以在函数式语言中使用全局变量)

ruby paradigms f# functional-programming scala

36
推荐指数
4
解决办法
4922
查看次数

如何在不使用Ruby保存到磁盘的情况下生成zip文件?

我在内存中生成了许多PDF文件,我想将它们压缩成一个zip文件,然后再将其作为电子邮件附件发送.我看过Rubyzip并且它不允许我创建一个zip文件而不将其保存到磁盘(也许我错了).

有没有办法在不创建临时文件的情况下压缩这些文件?

ruby zip

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

fields_for表单构建器对象为nil

有没有办法访问嵌套的form_bulder.object?

## controller
@project = Project.new
@project.tasks.build

form_for(@project) do |f|
  f.object.nil? ## returns false

  fields_for :tasks do |builder|
    builder.object.nil? ## returns true
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails formbuilder

36
推荐指数
2
解决办法
7004
查看次数

如何在我的rails应用程序中测试ActiveRecord :: RecordNotFound?

我在我的控制器中有这个代码,并希望通过功能测试来测试这个代码行.

raise ActiveRecord::RecordNotFound if @post.nil?
Run Code Online (Sandbox Code Playgroud)

我应该使用哪种断言方法?我使用内置的rails 2.3.5测试框架.

我用这段代码试了一下:

  test "should return 404 if page doesn't exist." do
    get :show, :url => ["nothing", "here"]
    assert_response :missing
  end
Run Code Online (Sandbox Code Playgroud)

但它对我不起作用.得到了这个测试输出:

test_should_return_404_if_page_doesn't_exist.(PageControllerTest):
ActiveRecord::RecordNotFound: ActiveRecord::RecordNotFound
app/controllers/page_controller.rb:7:in `show'
/test/functional/page_controller_test.rb:21:in `test_should_return_404_if_page_doesn't_exist.'
Run Code Online (Sandbox Code Playgroud)

ruby testing activerecord ruby-on-rails

36
推荐指数
1
解决办法
9970
查看次数

在Ruby中有类似Python生成器的东西吗?

我是Ruby的新手,有没有办法yield从Ruby函数中获取值?如果有,怎么样?如果没有,我有什么选择来编写惰性代码?

ruby lazy-evaluation

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

在HAML文件中使用独立于Rails的布局

我的最终目标是创建几个静态HTML文件,以便传递给其他人.

但对于我的工作流程,我希望将HAML作为基本源文件.在这样做的时候,我希望至少在我这边干预这个过程.

现在我有很多页面最终将共享一个共同的布局,我想知道如何合并布局.

这是我目前的代码:

./compile.rb

#!/usr/bin/env ruby

require 'rubygems'
require 'rake'
require 'haml'

FileList.new('./src/*.html.haml').each do |filename|
  if filename =~ /([^\/]+)\.haml$/
    File.open($1, 'w') do |f|
      f.write Haml::Engine.new(File.read(filename)).render
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

./src/layout.html.haml

!!!
%html
  %head
    %title Yay
  %body
    = yield
Run Code Online (Sandbox Code Playgroud)

./src/home.html.haml

= render :layout => 'header' do
  %p This is awesome
Run Code Online (Sandbox Code Playgroud)

现在,这显然不工作,因为渲染方法是未定义出的Rails的背景下,但我希望它得到跨我想要做的地步.

有什么建议?

ruby haml

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

使用ActiveRecord 3/Arel查找单个记录的最佳方法?

我曾经这样做过:

Foo.find_by_bar('a-value')
Run Code Online (Sandbox Code Playgroud)

我现在可以这样做:

Foo.where(:bar => 'a-value').limit(1).first
Run Code Online (Sandbox Code Playgroud)

这是推荐的吗?这是最好的方法吗?我应该继续使用"旧的"方式,因为它仍然是有用的语法糖,或者是否有更好的方式我现在可以做到这一点,这将支持链接和所有其他好东西?

ruby activerecord ruby-on-rails arel

36
推荐指数
4
解决办法
3万
查看次数

在Ruby中将关键字与常规参数混合使用?

Ruby 2.0支持关键字参数.我想知道,常规与关键字参数混合的"规则"是什么?这样的东西不起作用:

def some_method(a: 'first', b: 'second', c)
  [a, b, c]
end
Run Code Online (Sandbox Code Playgroud)

但这会:

def some_method(c, a: 'first', b: 'second')
  [a, b, c]
end
Run Code Online (Sandbox Code Playgroud)

那么为什么在关键字参数(而不是之后)之前放置一个常规参数呢?

网上有关于此的一些参考(混合关键字和常规参数)吗?我似乎找不到任何东西.

ruby

36
推荐指数
2
解决办法
6637
查看次数

`Range #include?`和`Range#cover?`之间有什么区别?

编辑修复了toro2k的评论.

Range#include?并且Range#cover?似乎在源代码看作是不同的1,2,和它们在不同的效率.

t = Time.now
500000.times do
    ("a".."z").include?("g")
end
puts Time.now - t    # => 0.504382493

t = Time.now
500000.times do
    ("a".."z").cover?("g")
end
puts Time.now - t    # => 0.454867868
Run Code Online (Sandbox Code Playgroud)

看源代码,Range#include?似乎比复杂Range#cover?.为什么不能Range#include?简单地说别名是Range#cover?什么?

ruby range

36
推荐指数
2
解决办法
6720
查看次数

36
推荐指数
8
解决办法
7万
查看次数