小编Mar*_*sen的帖子

在Ruby中有类似null流的东西吗?

我可以用:

File.open('/dev/null', 'w')
Run Code Online (Sandbox Code Playgroud)

在Unix系统上,但如果有一种Ruby方法来实现这一点,我想使用它.只是寻找一个IO流,立即"破坏"所有写入,有点像一个空对象.

ruby stream

27
推荐指数
3
解决办法
5414
查看次数

红宝石的"延伸"成本有多高?

首先,我知道怎么extendinclude他们的工作,什么通常用于等等.无论是一个好主意与否是不是我的问题的一部分.

我的问题是:有多贵extend?这是扩展实例和单例对象的常用Javascript技术.人们可以在Ruby中做类似的事情,但是如果在很多对象上使用它会很慢吗?

ruby

19
推荐指数
2
解决办法
1703
查看次数

告诉Capybara等到iframe已加载(已准备好)

有一种优雅的方式来做到这一点?目前我只是使用自定义步骤"等待10秒"来绝对确定,有足够的时间让iframe准备好.我不希望这个功能在我的功能不足的CI VM上失败,因为网络问题很小或CPU峰值.但这意味着功能套件浪费了大量时间,而且如您所知,如果测试套件需要很长时间,那么通常不会在CI服务器之外运行它.

iframe cucumber capybara

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

javascript:检查iframe网址是否是同一个域或外部的东西

我知道我无法访问iframe中的数据,该iframe显示来自其他域的页面.这非常好,但我想检测一下,iframe当前是显示来自我的域的页面还是外部的.

我的第一次尝试是尝试访问

$('iframe')[0].contentWindow.document
Run Code Online (Sandbox Code Playgroud)

包装try {} catch {},并且如果抛出错误,则意味着我无法访问它,因此iframe页面必须是外部的.这听起来像一个完美的解决方案,但事情是safari发布了一个"不安全的JavaScript尝试访问带URL的帧"消息到javascript控制台.这不仅是丑陋的,还可能导致其他或未来的浏览器向用户显示明确的安全警告?

javascript iframe same-origin-policy

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

rails 3.1资产管道:忽略gem中的资产

我不太确定实际的行为是什么,所以我的第一个问题是:
来自gem(在我的Spree中)的资产(例如javascripts)是否总是被编译?我不使用Spree的javascripts,因此不希望它们被编译.我不需要在我application.js或任何其他javascript文件中,但是

rake assets:precompile
Run Code Online (Sandbox Code Playgroud)

虽然编译它们.我只是不希望他们躺在我的public/assets文件夹中.

所以我想我的问题是,有没有办法禁止从gem编译javascripts?

ruby-on-rails sprockets asset-pipeline

6
推荐指数
1
解决办法
2354
查看次数

YARD:像attr_accessor一样记录自定义getter/setter对

我正在使用YARD来记录我的项目.YARD文档创建的属性

attr_accessor :some_attribute
Run Code Online (Sandbox Code Playgroud)

在单独的"实例属性摘要"部分中.现在我有另一个属性,但使用自定义setter和getter

def some_other_attribute
  ...
end

def some_other_attribute= value
  ...
end
Run Code Online (Sandbox Code Playgroud)

基本上我的问题是,如何让YARD像attr_accessor前一种情况一样记录这对setter/getter ,并some_other_attribute在"Instance Attribute Summary"中列出?

ruby documentation yard

5
推荐指数
1
解决办法
1879
查看次数

我的while循环有什么问题?

我正在重做迄今为止我在Ruby中完成的18个欧拉挑战,我喜欢它.不幸的是,我犯了一些初学者的错误,无法弄清楚我做错了什么.具体来说,下面的代码有什么问题?我尝试将所有斐波那契数字添加到400万以下.

start = Time.now

def sum_fibonacci_till_4_million
    previous_previous_value = 1
    previous_value = 2
    i = 2
    fibo = Array.new

    while previous_value < 4000000 do
        fibo.push(previous_previous_value)
        fibo.push(previous_value)

        temp = previous_value
        previous_value = previous_value + previous_previous_value
        previous_previous_value = temp

        i++
    end

    return fibo.inject(:+)
end

puts "The answer is #{sum_fibonacci_till_4_million()} and it took #{(start - Time.now) 
* 1000} milliseconds."
Run Code Online (Sandbox Code Playgroud)

我得到的输出是

2.rb:22: syntax error, unexpected keyword_end
2.rb:27: syntax error, unexpected $end, expecting keyword_end
...ime.now) * 1000} milliseconds."
...    
Run Code Online (Sandbox Code Playgroud)

我以前遇到过这个错误,我设法用for循环修复它.但显然我的最终陈述有问题.我不知道.

有人可以帮帮我吗?

ruby

0
推荐指数
1
解决办法
100
查看次数

尝试添加验证但在Posts #create中获取NameError

试图在我的博客文章中添加验证,所以当你尝试添加少于5个字符的标题时,你会收到一条错误消息,但此刻我收到此错误消息 -

NameError in Posts#create
& undefined local variable or method `msg' for #<#<Class:0x007fce95ca04c0>:0x007fce95b4a300>
Run Code Online (Sandbox Code Playgroud)

new.html.erb

<div class = "container">
    <h1> New Post </h1>

        <%= form_for :post, url: posts_path do |f| %>

    <% if @post.errors.any? %>
        <div id="error_explanation">
            <h2><%= pluralize(@post.errors.count, "error") %> prohibited this post from being saved:</h2>
        <ul>
            <% @post.errors.full_messages.each do [msg] %>
            <li><%= msg %></li> <error

            <% end %>
        </ul>
    </div>
    <% end %>
    <p>
        <%= f.label :title %><br>
        <%= f.text_field :title %>
    </p>
        <%= f.label :text %><br>
        <%= …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-on-rails-4

0
推荐指数
1
解决办法
78
查看次数