小编Jam*_*sen的帖子

有没有办法从Ruby中的实例调用私有Class方法?

self.class.send :method, args...当然不是.我想在类和实例级别上创建一个相当复杂的方法,而不需要复制代码.


更新:

@Jonathan Branam:这是我的假设,但我想确保没有其他人找到方法.Ruby中的可见性与Java中的可见性非常不同.你也很正确,private它不适用于类方法,虽然这将声明一个私有类方法:

class Foo
  class <<self
    private
    def bar
      puts 'bar'
    end
  end
end

Foo.bar
# => NoMethodError: private method 'bar' called for Foo:Class
Run Code Online (Sandbox Code Playgroud)

ruby visibility scope access-specifier class-method

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

在Ruby中重构

是否有任何支持Ruby或RoR重构的程序或IDE?

ruby refactoring ruby-on-rails

15
推荐指数
2
解决办法
1996
查看次数

如何从脚本中设置bash环境变量?

我有一些代理设置,我偶尔会想要打开,所以我不想把它们放在我的~/.bash_profile.我试图把它们直接~/bin/set_proxy_env.sh,添加~/bin到我的PATH,和chmod +x荷兰国际集团的脚本,但尽管脚本运行时,该变量并不在我的壳粘.有谁知道如何让他们留在shell会话的其余部分?

macos bash terminal

15
推荐指数
3
解决办法
9433
查看次数

如何在单页面应用程序中使用#-URL?

本文提出了一个非常有说服力的论点,因为URL是长期存在的(它们被加入书签并传递),它们应该是有意义的,并且使用哈希进行实际路由(确定页面上显示的数据和/或状态)因此,不适当的.当我尝试在我的单页应用程序中实际执行此操作时,我遇到了一个问题:如何渲染我的链接以便所有浏览器都可以使用该应用程序?我认为,有三种选择:

  1. 所有人href都有一个#/前缀.这在HTML4浏览器中非常有用.在HTML5浏览器中,我可以添加一个重定向到无哈希版本的Sammy路由,这也很有用.浏览器将链接标记为已访问时可能存在问题,因为它们不是标记或未标记它们.另一个问题是它错了.通过右键单击并选择"复制链接URL"来共享链接的任何人都将发送一个工作但很糟糕的URL.
  2. 没有href■找一个#/前缀.据我所知,HTML4浏览器无法拦截这些链接点击,这意味着每个浏览器都会导致页面刷新.虽然应用程序可能会仍然起作用,因为我可以用萨米路线改写hashless版本hashy在页面加载的,页面加载会单页应用程序的性能.
  3. 我动态地确定是否加前缀#/.这意味着我的所有链接都必须具有动态标记,并使应用程序大大复杂化.

javascript url html5 singlepage

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

用于Flash开发的FOSS工具

我正在考虑为Flash做一些开发.我需要购买昂贵的商业工具还是有一些FOSS工具我可以开始使用?显然,有很多工具,但它们是否足以完成工作?避免使用商业或官方工具会让我失去什么?

flash actionscript open-source

14
推荐指数
2
解决办法
1398
查看次数

铁轨入门?必须有宝石吗?

我正在使用Rails开始一个项目的工作,但是我正在等待第三版实用的rails book在我购买一本书之前出来.

无论如何,我的问题比我如何开始有点尖锐......

每个人都使用的必备宝石是什么?

我需要基本的身份验证,所以我有一个宁静的身份验证宝石,但除此之外,我不知道我不知道.这个信息在哪里崩溃了吗?99%的人在开始新的rails应用程序时开始的一些基本设置?

提前致谢.

ruby rubygems ruby-on-rails

14
推荐指数
2
解决办法
3395
查看次数

如何在JS Rails响应中包含HTML?

我有一个响应HTML和JS(AJAX)查询的FooController:

# app/controllers/foo_controller.rb:
class FooController < ApplicationController
  layout 'foo'
  def bar
    respond_to do |format|
      format.html # foo/bar.html.erb
      format.js   # foo/bar.js.erb
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

支持它的模板:

# app/views/layouts/foo.html.erb:
<html>...<%= yield %>...</html>

# app/views/layouts/foo.json.erb:
<%= yield %>
Run Code Online (Sandbox Code Playgroud)

还有一个我要渲染部分的AJAX模板:

# app/views/foo/bar.js.erb:
dojo.byID('some_div').innerHTML = "<%= escape_javascript(render(:partial => 'some/partial')) %>";
Run Code Online (Sandbox Code Playgroud)

如果JS模板中只有普通的旧JS(比如alert('hi');),它使用我的JS模板.但是,当我放入render(:partial)时,它会使整个响应使用HTML模板,这意味着它不再是有效的JS.

一种可能的解决方案是使用布局函数:

class FooController < ApplicationController
  layout :choose_layout
  ...
  private
  def choose_layout
    return nil if request.xhr?
    'foo'
  end
end
Run Code Online (Sandbox Code Playgroud)

但我的版本应该工作!为什么不呢?

javascript ruby ruby-on-rails erb

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

Ember Router - 如何处理404(未找到)路由?

我正在试图弄清楚如何使用我的应用程序处理无效路由Ember.Router.

目前,如果我输入无效路线,例如myapp.com/#FooBarDoesntExist,它将重定向到索引路线('/').我想要它,如果我可以定义一个notFound或404状态,它将路由到所以我可以通知用户发生了什么.而不是他们被倾倒在主页上.

ember.js ember-old-router

14
推荐指数
2
解决办法
4061
查看次数

大型Maven项目的存储库布局

我有一个大型应用程序(约50个模块)使用类似于以下的结构:

  • 应用
    • 通讯模块
      • 彩色通信模块
      • SSN通信模块
      • 等通信模块
    • 路由器模块
    • 服务模块
      • 投票服务模块
        • 用于投票的Web界面子模块
        • 投票收集器子模块进行投票
        • 等投票
      • 测验服务模块
      • 等模块

我想将应用程序导入Maven和Subversion.经过一些研究后,我发现存在两种实用的方法.

一个是使用树结构,就像前一个一样.这种结构的缺点是你需要大量的调整/黑客才能使多模块报告与Maven一起工作.另一个缺点是在Subversion中,标准的trunk/tags/branches方法为存储库增加了更多的复杂性.

另一种方法使用扁平结构,其中只有一个父项目,所有模块,子模块和子模块部分都是父项目的直接子项.这种方法适用于报告,并且在Subversion中更容易,但是我觉得我这样失去了一些结构.

从长远来看,你会选择哪种方式?为什么?

java svn maven-2

13
推荐指数
1
解决办法
3907
查看次数

如何为(所有)Rails生成RDOC?

我可以

sudo gem rdoc activerecord --no-ri
Run Code Online (Sandbox Code Playgroud)

sudo gem rdoc actionpack --no-ri
Run Code Online (Sandbox Code Playgroud)

这两个都给了我很好的文档.

sudo gem rdoc rails --no-ri
Run Code Online (Sandbox Code Playgroud)

因为Rails宝石本身只是其他人的持有者,所以几乎没有给我任何东西.如何生成相应的http://api.rubyonrails.org/

ruby api ruby-on-rails rdoc

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