草庐IT

public_private

全部标签

ruby - 从 Ruby 中的类方法调用私有(private)实例方法

我可以创建一个可以被类方法调用的私有(private)实例方法吗?classFoodefinitialize(n)@n=nendprivate#orprotected?defplus(n)@n+=nendendclassFoodefFoo.bar(my_instance,n)my_instance.plus(n)endenda=Foo.new(5)a.plus(3)#Thisshouldnotbeallowed,butFoo.bar(a,3)#Iwanttoallowthis如果这是一个非常初级的问题,我深表歉意,但我无法通过Google找到解决方案。 最佳

ruby - 私有(private)方法调用错误

写了一个方法;当我尝试运行它时,出现错误:NoMethodError:privatemethod‘subtotal’calledfor39.99:Floatattoplevelingrades.rbatline9Programexitedwithcode#1after0.04seconds.代码如下:defsubtotal(qty=1)returnnilifself.to_f 最佳答案 当你在任何类之外声明一个方法时,它是一个私有(private)方法,这意味着它不能被其他对象调用。您应该打开您希望该方法进入的类,然后将方法定义放在

ruby - Ruby 模块中的私有(private)类(不是类方法)?

我是Ruby新手(熟悉Python、C++和C)。我需要创建一个仅供模块中的其他类和方法使用的类。在Python中,我将其称为__classname。我会在C++中使用一个空的typedef。我如何在Ruby中执行此操作(或者我是不是找错了树而不是以“Ruby方式”执行此操作?) 最佳答案 要认识到的最重要的事情是类没有什么特别的。它只是一个对象。按照惯例,类被分配给常量,但没有任何内容表明它们必须是。因为类和任何其他对象一样只是对象,所以将它们设为私有(private)的方式与将任何其他对象设为私有(private)的方式相同。以

ruby - 将委托(delegate)方法设为私有(private)

我委托(delegate)了几个方法,还希望它们都是私有(private)的。classWalrusdelegate:+,:to=>:bubblesdefbubbles0endend我可以说private:+,但我必须为每个方法都这样做。有没有办法返回委托(delegate)方法列表或让委托(delegate)创建私有(private)方法? 最佳答案 因为delegate返回传入的符号列表,您可以像这样链接方法调用:private*delegate(:foo,:bar,:to=>:baz)

ruby-on-rails - 保护公共(public)内容/Rails 应用程序中的内容

我正在维护一个Rails应用程序,它在public/文件夹中有内容,现在需要通过登录来保护这些内容。我们正在考虑将这些文件文件夹移动到public/之外的路径,并编写一个RailsController来提供内容。在我们开始写这篇文章之前,我很好奇是否还有其他人遇到过此类问题?我寻找了一些可能已经这样做但没有找到任何东西的gem/插件。有人为此创建了gem吗? 最佳答案 我在一个人们付费下载某些文件的站点上完成了此操作,这些文件存储在RAILS_ROOT/private中。首先要知道的是,您希望网络服务器处理发送文件,否则您的应用程序

ruby - Ruby 的 send 和 public_send 方法有什么区别?

我很好奇send和public_send有什么区别。例如:classKlassdefhello(*args)"Hello"+args.join('')endendk=Klass.newk.send:hello,"gentle","readers"#=>"Hellogentlereaders"k.public_send:hello,"gentle","readers"#=>"Hellogentlereaders" 最佳答案 Unlikesend,public_sendcallspublicmethodsonly.Source例子:cl

ruby - 如何在carrierwave中将文件存储在公共(public)文件夹之外?

默认情况下,Carrierwave接收由store_dir在uploader中生成的url,并将路径添加到Rails应用程序的公共(public)文件夹并存储文件。例如如果defstore_dir"uploads/#{model.id}"end然后文件存储在public/uploads/:attachment_id如果尝试将存储的文件移出公用文件夹,它仍会保存在公用文件夹中。有谁知道如何将文件存储在公用文件夹之外?? 最佳答案 最简洁的方法是设置CarrierWave根选项CarrierWave.configuredo|config

ruby - 使用 github api v3 列出组织私有(private)仓库中的所有问题

我正在尝试从组织的私有(private)存储库中检索所有问题,但运气不佳。我正在使用ruby​​gem“github_api”,但我也尝试过使用curl访问它到目前为止,我能够检索分配给我或订阅的所有问题,但不是该特定repo存在的所有问题。使用github_apigem(https://github.com/peter-murach/github),我已经走到这一步了@github.issues.issues(:filter=>"subscribed")仅供引用:我是组织和仓库的所有者查看githubapi(问题),似乎没有一个过滤器可以返回我需要的内容。这可能吗?谢谢!

ruby-on-rails - 如何部署我的应用程序可以访问但其他人无法获取的 'private' gem?

我有几个应用程序,我想共享一些通用代码。我想gem代码并以这种方式在应用程序之间共享/版本化它,尽管我不想将它发布到公共(public)gem服务器。有哪些选项? 最佳答案 这看起来很有希望:https://github.com/cwninja/geminabox/虽然我自己没有用过,所以我不能保证。但是,我最近在官方Rubygems问答网站上看到的一个帖子中推荐了它,其中提到内置的ruby​​gems托管不是推荐的解决方案,而Geminabox是一个不错的选择。请注意,它不具有任何身份验证或安全性(显然,通过模糊处理除外),因此根

ruby-on-rails - RSpec: stub 私有(private)方法

我尝试用RSpec2测试一个类,它有一些私有(private)方法,这些方法是从一些公共(public)方法调用的。我用测试公共(public)方法@foo.should_receive(:start_training).exactly(2).times他们是否被调用以及调用频率。我的问题是,这种方法不适用于私有(private)方法。那么,有什么方法可以将@foo.send(:private_method)与should_receive结合使用吗?或者任何其他语法? 最佳答案 should_receive(:method)无论:m