小编Dan*_*per的帖子

你可以在没有Source的情况下分发Ruby on Rails应用程序吗?

我想知道是否可以在没有源代码的情况下分发用于生产的RoR应用程序?我在SO上看过这篇文章,但我的情况有点不同.这将是一个由具有一些线索的人管理的应用程序,所以我很酷,仍然需要在客户端设置Apache/Mongrel/MySQL.我真正想要的是保护源.编码似乎是分发PHP应用程序的一种流行方式(例如:Helpspot).

我发现了这些潜在的解决方案:

  • Zenobfuscate - 然而,并不支持所有类型的Ruby代码,因此可以计算出来
  • Ruby编码器 - 可能是最好的选择,因为他们的PHP编码器看起来没问题(但我还没有尝试过),但它还没有.我之前使用过IONcube for PHP并且运行良好,但IONcube似乎并不感兴趣.
  • 弹弓 - 它在其他SO帖子中提到过,但它解决了我的另一个问题,来源仍然可见.
  • RubyScript2Exe - 来自doco,它不是生产就绪的,所以重要的是.

我听说可能使用JRuby并分发字节码可能是实现这一目的的一种方法,但我从未使用过JRuby所以我不确定涉及到什么.

任何人都可以提供任何想法和/或已知示例吗?理想情况下,我也希望拥有某种自动构建方案.

ruby obfuscation encoding ruby-on-rails distribution

24
推荐指数
2
解决办法
8994
查看次数

有条件重定向的最佳方式?

使用Rails v2.1,假设您有一个可以从多个位置访问的控制器的操作.例如,在Rails应用程序中,您有一个链接可以从两个不同的视图编辑用户,一个在用户索引视图上,另一个在另一个视图中(比如每页的导航栏).

我想知道根据用户点击的链接将用户重定向回正确位置的最佳方法是什么.例如:

例1:

  1. 列出所有用户
  2. 单击列表中用户的"编辑"
  3. 用户单击表单上的"保存",控制器重定向回1.

例2:

  1. 用户可以在应用程序内的任何页面上,导航栏显示用于编辑当前用户的链接
  2. 用户单击要编辑的链接
  3. 用户单击表单上的"保存",当用户单击导航栏中的"编辑"链接时,控制器会重定向回到他们所在的任何页面.

我以前见过它:

  1. 使用出现链接的原始控制器/操作在原始编辑链接上放置参数.为了使它更干,你可以在帮助器中使用@ controller.controller_name和@ controller.action_name.
  2. 控制器将参数保存到会话变量.
  3. 一旦控制器保存了记录,它就会重定向到会话变量.

我不太喜欢这个解决方案,需要将参数添加到视图中的每个适用链接.我想知道是否有办法将这一切都构建到控制器中.

我想的一个更​​好的方法是:

  1. 在"编辑"操作上放置一个before_filter,以便将引用者(这是否足够可靠?)保存到会话中.
  2. 当命中"update"时,控制器将重定向到会话变量,然后删除会话变量.

有关最佳方法的任何想法吗?

ruby model-view-controller redirect ruby-on-rails

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

在ActiveRecord中覆盖"查找"DRY方式

我有一些模型需要在其上放置自定义查找条件.例如,如果我有一个Contact模型,每次调用Contact.find时,我想限制返回的仅属于正在使用的Account的联系人.

我通过谷歌找到了这个(我已经定制了一点):

def self.find(*args)
  with_scope(:find => { :conditions =>  "account_id = #{$account.id}" }) do
    super(*args)
  end
end
Run Code Online (Sandbox Code Playgroud)

这很有效,除了少数几个account_id不明确的情况,所以我把它改编成:

def self.find(*args)
  with_scope(:find => { :conditions =>  "#{self.to_s.downcase.pluralize}.account_id = #{$account.id}" }) do
    super(*args)
  end
end
Run Code Online (Sandbox Code Playgroud)

这也很好,但是,我希望它是干的.现在我有一些不同的模型,我希望使用这种功能.做这个的最好方式是什么?

当你回答时,请包含代码,以帮助我们的思想掌握元编程Ruby-fu.

(我正在使用Rails v2.1)

ruby activerecord overriding metaprogramming ruby-on-rails

5
推荐指数
2
解决办法
6658
查看次数

如何在所有请求上实现重定向(在某些条件下)?

我想设置一些内容,以便在我的应用程序中的帐户被禁用时,我希望将所有请求重定向到"已禁用"消息.

我在我的ApplicationController中设置了它:

class ApplicationController < ActionController::Base
  before_filter :check_account

  def check_account
    redirect_to :controller => "main", :action => "disabled" and return if !$account.active?
  end
end
Run Code Online (Sandbox Code Playgroud)

当然,如果帐户未处于活动状态,则进入无限循环时,这不会很有效.我希望使用类似的东西:

redirect_to :controller => "main", :action => "disabled" and return if !$account.active? && @controller.controller_name != "main" && @controller.action_name != "disabled"
Run Code Online (Sandbox Code Playgroud)

但我注意到在Rails v2.1(我正在使用的)中,@ console现在是控制器,这似乎在ApplicationController中不起作用.

实现这样的事情最好的方法是什么?

ruby redirect ruby-on-rails

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