Tag: gem

无法安装ZenTest 4.8.4

当我尝试安装ZenTest时: gem install ZenTest 我收到以下错误: [C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/specifications/ZenTest-4.8.4.gemspec]中的gemspec无效:格式错误的要求[“ = 1.8”] 我试图清理gem并删除ZenTest无济于事。 怎么了?

Rails设计为未确认的用户抛出302错误

我已经整合了ROR站点中教练登录的设计。 它工作正常,但当我尝试通过尚未确认的用户登录时,它会抛出302错误。 以下是我使用的代码的详细信息: 1) Database Schema: create_table “coaches”, :force => true do |t| t.string “first_name”, :limit => 20 t.string “last_name”, :limit => 20 t.integer “status”, :limit => 2, :default => 0 t.datetime “created_at” t.datetime “updated_at” t.string “email”, :default => “”, :null => false t.string “encrypted_password”, :default => “”, :null => false t.string “reset_password_token” t.datetime “reset_password_sent_at” […]

为什么没有“heroku捆绑更新”?

我不明白为什么我必须更新我的gems localy并将其推送到heroku,以获得它们的更新版本? 为什么没有heroku bundle update命令?

如何保存整个Rails应用包,包括使用的gem?

我使用了很多gem。 他们对依赖关系非常敏感。 现在,gem的当前组合是完美的。 我想保存整个应用程序,并在我下一个项目时重新使用它。 如您所知,未来的承诺将存在于rubygem.org 所以我想保存正在使用的App和gem的整个包。 除非我需要新gem,否则我不需要关心设置gem。 我需要关心的只是在下一个项目中进行编码。 有人告诉我使用此命令并保存整个App文件夹 bundle install –path=vendor/bundle 在此之后,我的应用程序搞砸了:( recompile后jQuery不再工作了 所以我确实需要用旧版本替换整个App文件夹,这是在/usr/local/bin/ruby /usr/local/lib/ruby/gems/1.9.1修改gem。 现在, recompile后jQuery工作正常:) 对于这种情况,我如何保存用于它的App和gem的整个包? 我想做的是,我只想设置Ruby的正确版本和MySQL。 然后我想把这个包装进去并开始编码,而不是部署gem的环境!! 有人可以分享一下这个想法吗?

试图用Rails 3将gem商品化为捆绑包,但是Gem没有Gemspec

按照以下简单步骤: gem unpack spree_easy_contact -v 1.0.2 –target vendor/gems Unpacked gem: ‘../vendor/gems/spree_easy_contact-1.0.2’ 然后在我的Gemfile中添加以下行: gem “spree_easy_contact”, :path => “vendor/gems/spree_easy_contact-1.0.2” 但是当我运行bundle install时它失败了。 Could not find gem ‘spree_easy_contact (>= 0, runtime)’ in source at vendor/gems/spree_easy_contact-1.0.2. Source does not contain any versions of ‘spree_easy_contact (>= 0, runtime)’ 我相信这是因为gem中没有gemspec文件。 有没有办法为它建立一个? 有人知道解决这个问题的方法吗?

使用devise进行RESTful登录(Rails 4)

如何使用Ruby on Rails中的设计进行RESTful注册和登录(我使用的是版本4)? 我找不到任何关于我应该POST到服务器的参数(例如电子邮件,密码)的文档。 在当前版本的设计中,似乎不支持使用JSON数据(例如通过AJAX)的RESTful登录 – 默认行为是为任何类型的请求发送回整个HTML页面,而不是JSON对象用于专门处理JSON请求。 这是否意味着我需要创建/扩展自定义控制器以使用JSON处理用户注册和登录RESTful应用程序? 如果是这样,请详细说明。

如何在模块中使用’before_action’

我想在模块中使用’before_action’。 不幸的是,我无法让它发挥作用。 我是googleing,但我发现的一切都无法解决问题。 我的模块文件如下所示: module ShowController include SimpleController #before_action :set_object, only: [:show] def show set_object end end 我想使用outcommented before_action行而不是show方法。 因此,我试图包括以下模块: include AbstractController::Callbacks include ActiveSupport::Callbacks include ActiveSupport::Concern include ActiveSupport 另外,我试图“要求’active_support / all’”或core_ext。 我收到的error_message是: undefined method `class_attribute’ for SimpleController::ShowController:Module 最后,没有任何结果,我没有找到解决方案。

为什么’捆绑’在我的开发机器上安装生产gem?

Gemfile说: gem ‘sqlite3’, :groups => [:development, :test] gem ‘mysql2’, :group => :production 然而,当我在我的开发机器上键入bundle install时, bundle install了所有gem。 我的设置有什么问题?

重新打开由gem提供的ActiveRecord模型

我正在尝试扩展gem( https://github.com/peteonrails/vote_fu )为我的应用程序提供的ActiveRecord模型( Vote )。 (即app/models没有vote.rb ) 我的第一个方法是创建一个名为lib/extend_vote.rb的文件,其中包含以下代码: Vote.class_eval do after_create :create_activity_stream_event has_one :activity_stream_event def create_activity_stream_event # something.. end end 这在创建第一个投票时有效,但是当我尝试创建每个后续投票时,我得到错误TypeError (can’t dup NilClass) 。 我认为这个错误是由于每次请求后自动重新加载Vote类这一事实,但是lib/extend_vote.rb的代码只在服务器启动时加载一次,这会导致has_one :activity_stream_event关联表现得很奇怪。 (另外,如果我在development.rb设置config.cache_classes = true ,问题就会消失) 为了解决这个问题,我尝试通过向to_prepare添加to_prepare块来对每个请求重新加载投票扩展: config.to_prepare do load ‘extend_vote.rb’ end 这解决了(can’t dup NilClass)问题,但现在每当我创建新的投票时, create_activity_stream_event回调都被称为额外的时间。 即,第一次投票调用一次,第二次投票两次,等等。所以看起来to_prepare块正在积极地重新加载扩展TOO并添加重复的回调。 向此Vote模型添加方法和回调的最佳方法是什么?

如何覆盖资产的gem资产中的单个文件:precompile?

情况 我使用带有自己的JavaScript和样式表资源的gem。 此gem使用标准的application.js和application.css清单来要求其所有资产: [gem]/app/assets/javascripts/gem_name/application.js require_tree . [gem]/app/assets/javascripts/gem_name/backoffice/menu.js … some JavaScript code … [gem]/app/assets/javascripts/gem_name/backoffice/forms.js … some JavaScript code … 在开发模式中,我可以通过将它们放在[my_app]/app/assets文件夹中来覆盖单个资产文件,例如: [my_app]/app/assets/javascripts/gem_name/backoffice/menu.js 然后在Rails中配置的加载路径确保[my_app]/app/assets文件覆盖[gem]/app/assets 。 但是当我使用rake assets:precompile ,覆盖文件menu.js不会替换gem中的原始文件 。 已编译的application.js包含原始menu.js中的代码。 演示 请参阅此测试应用程序的行为: https : //github.com/widescape/AssetCompileTest 注意事项 到目前为止,我发现require_tree 只在当前文件的目录中查找文件,并且不会查看多个加载路径(例如app / assets或vendor / assets)。 因此,如果当前文件是[gem]/app/assets/javascripts/gem_name/application.js ,则Sprockets#require_tree将仅在[gem]/app/assets/javascripts/gem_name/查找更多文件,并且不会使用其他文件加载路径,如[my_app]/app/assets/… 我不愿意将gem中的所有资产文件复制到我的app / assets中,只能覆盖一个文件。 并且分支gem来定制单个文件也没有很大的吸引力。 还有别的办法吗? 注意:我知道我可以创建一个自定义JavaScript文件menu_patched.js ,它覆盖原始文件中定义的对象和方法,并将其放置,以便在调用原始对象和方法之前应用其定义(猴子修补JavaScript样式)。 但我在这里寻找更清洁的解决方案。