标签: ruby-on-rails-plugins

如何在Rails中使模型ID不可预测和随机

我正在编写一个rails应用程序,就其本质而言,不需要用户注册,因此不能使用身份验证作为保护记录的常用方法.(我知道,我知道......)此处的用户信息仅限于电子邮件地址.所以我确实需要一种方法来使我的模型ID不可预测,以便其他ID不容易被猜到.(我知道我知道...)

我已经尝试使用像uuidtools这样的插件随机化id,因为创建了记录,如下所示:

require 'uuidtools'
class Post < ActiveRecord::Base 
 def before_create() 
  self.id = OpenSSL::Digest.SHA1.hexdigest(UUID.timestamp_create()) 
 end 
end 
Run Code Online (Sandbox Code Playgroud)

......一开始看起来不错,但有趣的事情发生了.ActiveRecord有时会尝试在id中插入一个0值,我会收到错误,例如'找不到id = 0的帖子'等等...

我已经没想完了.有人可以帮忙吗?谢谢.

ruby-on-rails ruby-on-rails-plugins

20
推荐指数
4
解决办法
9435
查看次数

gemspec中包含的依赖关系未添加到rails引擎中的资产管道中

我正在编写一个具有一些依赖关系的rails引擎.我已经在gemspec中指定了依赖项,并且引擎在运行时找到它们bundle install(即Gemfile.lock看起来正确).当我想在Ruby文件中使用插件时,我可以这样做,但需要显式require dependency-name位于文件的顶部.

但是,当我想使用依赖项的资产管道时,sprockets无法找到它.

我正在使用的应用程序(现在)是一个虚拟应用程序,它位于rails插件的测试文件夹中.如果我在引擎的Gemfile(实际上是虚拟应用程序的Gemfile)中指定它们,Sprockets可以找到资产,但如果我在gemspec中指定它们则不会.我不想依赖Gemfile,因为这意味着任何使用我的插件的应用都需要手动将我的所有依赖项添加到他们的Gemfile中.出于同样的原因,我不想要一个涉及更新应用程序配置文件的解决方案.

当从gemspec中包含依赖项时,这适用于(在ruby文件中):

require 'dependency-name'
Run Code Online (Sandbox Code Playgroud)

但是当从gemspec中包含依赖项时,这(在JS文件中)不起作用:

//= require 'dependency-name'
Run Code Online (Sandbox Code Playgroud)

require从Gemfile中包含依赖项时,都不需要.我认为这很清楚,但如果您需要更多细节,请告诉我.

rubygems ruby-on-rails-plugins ruby-on-rails-3.1 asset-pipeline

20
推荐指数
2
解决办法
2962
查看次数

为Rails应用程序构建ruby gem

作为一个Rails开发人员,我觉得有点愚蠢地问这个问题,但希望我会学到一些新东西,有人可以让我摆脱困境!在我的rails应用程序中,我一直使用(其他人)宝石,我也使用来自社区或我自己的插件.

我理解使用宝石而不是插件的好处,因为它们是版本,分段,系统范围,更易于管理和共享等等,但我真的不知道如何为我的rails应用程序制作宝石!?

你总是从一个插件开始并将其转换为宝石,我已经看到了"将它打包为宝石"这几个字.另外我正在考虑构建的宝石在普通的ruby程序中并不好用,它只对rails应用程序有用.我甚至不确定它的语义是否有意义,'RubyGem'只适用于rails应用程序!?

我想创建一个gem(如果这是我应该使用的?),为我的rails应用程序提供一个独立的功能.它需要添加数据库迁移,新路由并提供控制器和视图或有用的视图助手.我知道我可以通过一个插件来实现这个目标,但是我想知道如何/为什么要将它作为'Ruby Gem'来实现?

rubygems ruby-on-rails ruby-on-rails-plugins

18
推荐指数
1
解决办法
6428
查看次数

编写Redmine插件的好文档

我目前正在为Redmine开发一些插件,我必须说,我对这个主题缺少可用的文档感到有些失望.

通常情况下,如果我正在寻找关于类/方法的解释,我需要花费一致的时间浏览核心类,并努力理解那里编写的代码(不幸的是,似乎有些人忘了记录他们的代码) .

我已经检查了他们的论坛http://www.redmine.org/projects/redmine/boards,似乎需要永远才能回答一个问题.

这就是为什么我想就一些关于这个主题的一些好的API文档/书籍/论坛提出一些建议.

ruby-on-rails redmine ruby-on-rails-plugins redmine-plugins ruby-on-rails-3

18
推荐指数
3
解决办法
6871
查看次数

ApplicationController的副本已从模块树中删除但仍处于活动状态

每当两个并发HTTP请求转到我的Rails应用程序时,第二个总是返回以下错误:

ApplicationController的副本已从模块树中删除但仍处于活动状态!

从那里它给出了一个无益的堆栈跟踪效果"我们经历了标准服务器的东西,在ApplicationController上运行了你的第一个before_filter (我检查过;它只是先运行哪个过滤器) ",然后提供以下内容:

/home/matchu/rails/torch/vendor/rails/activesupport/lib/active_support/dependencies.rb:414:in"load_missing_constant'

/home/matchu/rails/torch/vendor/rails/activesupport/lib/active_support/dependencies.rb:96:in`const_missing'

我假设是一个通用的回应,并没有真正说太多.

谷歌似乎告诉我,开发Rails引擎的人会遇到这种情况,但我不这样做.我所做的就是将我的Rails应用程序从2.2(2.1?)升级到2.3.

导致此错误的可能原因是什么,以及如何跟踪实际发生的情况?我知道这个问题很模糊,所以其他任何信息都有帮助吗?

更重要的是:我刚刚尝试在"生产"环境中进行测试,并且错误似乎不会持续存在.那么这只会影响发展吗?我不需要太担心吗?

ruby rubygems ruby-on-rails-plugins ruby-on-rails-2

17
推荐指数
1
解决办法
7715
查看次数

使用生成器创建Ruby on Rails 3 gem(包括命名空间)

我正在尝试使用Rails 3(beta 4)的生成器创建一个gem.我按照这些说明操作,但我无法运行.问题是,当我在生成器文件中定义模块时,生成器会列出'rails generate',但由于找不到生成器而无法执行.

从说明中(不适用于'rails generate my_gem:install'):

module MyGem
  class InstallGenerator < Rails::Generators::Base
    source_root File.expand_path("../templates", __FILE__)

    # all public methods in here will be run in order
    def add_my_initializer
      template "initializer.rb", "config/initializers/my_gem_initializer.rb"
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

修改(使用'rails generate install):

class InstallGenerator < Rails::Generators::Base
  source_root File.expand_path("../templates", __FILE__)

  # all public methods in here will be run in order
  def add_my_initializer
    template "initializer.rb", "config/initializers/my_gem_initializer.rb"
  end
end
Run Code Online (Sandbox Code Playgroud)

但是,我想为生成器设置名称空间,例如company:gem_name:generator,我必须使用模块方法(我认为).我的猜测是它与查找和目录结构有关,但我无法弄清楚如何.我尝试了几种方法:

lib
-generators
--my_gem.rb

lib
-generators
--company
---my_gem.rb

lib
-generators
--company
---my_gem_name
----my_gem.rb
Run Code Online (Sandbox Code Playgroud)

但没有任何帮助.我在互联网上也发现了很多,但是如果我展示了我需要的东西,那就是非.

ruby rubygems ruby-on-rails-plugins ruby-on-rails-3

17
推荐指数
1
解决办法
7024
查看次数

铁路的"喜欢","不喜欢"插件

铁路有任何"喜欢","不喜欢"的插件......

我通过评级插件...但他们都是5星评级插件...

ruby-on-rails ruby-on-rails-plugins

16
推荐指数
2
解决办法
4534
查看次数

如何强制我的插件重新加载每个请求?

据我了解,在开发模式下每个请求都不会在Rails中重新加载插件.这是有道理的,因为通常您将插件添加到您的应用程序,它是您正在开发的应用程序.

但是如果你正在开发一个插件,你必须重新启动服务器,每次更改插件都会产生很大的开销.

有没有办法让Rails在开发过程中重新加载你的插件,重新加载模型和控制器的方式?

plugins ruby-on-rails reload ruby-on-rails-plugins ruby-on-rails-3

16
推荐指数
2
解决办法
3910
查看次数

静态网站生成

我需要一种简单的方法来生成静态网页,以便我可以使用Apache或Nginx提供它们.目前我正在使用SproutCore的构建工具(Abbot)来生成静态页面,但这有点麻烦,因为它是为构建SproutCore应用程序而非非SproutCore HTML页面而设计的.

这是我的要求:

  • Javascript必须合并和缩小
  • 必须组合CSS文件
  • 每个image/CSS/Javascript资产必须具有唯一的URL才能获得更好的缓存(查询字符串不够)
  • 资产URL只有在真正发生变化时才会有所不同
  • 本地化支持彻底的HTML,CSS,Javascript和图像文件
  • 漂亮的模板引擎与布局,局部等.

以下是我找到的可能的解决方案:

有什么想法吗?

经过漫长的评估过程,我决定使用Middleman.它可以解决问题,我喜欢它的简单性以及我可以使用现有的Rack组件.

最好的祝福,

佩卡·马蒂拉

ruby ruby-on-rails-plugins ruby-on-rails-3 middleman

16
推荐指数
1
解决办法
5130
查看次数

安装rails插件时发出警告

我在rails应用程序中安装任何插件时收到以下警告.

/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-2.3.5/lib/active_support/core_ext/kernel/agnostics.rb:7: warning: Insecure world writable dir /usr/local/bin in PATH, mode 040777
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我如何解决这个问题?谢谢

ruby ruby-on-rails ruby-on-rails-plugins

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