小编zet*_*tic的帖子

rake任务在哪里定义?

在新创建的Rails项目(由...生成rails someName)上,可以运行一些"默认"rake任务,例如:

  • rake test
  • rake db:migrate
  • 等等

问题是,这些任务在哪里被描述?默认情况下Rakefile没有所有这些任务.

此外,我检查了一些使用的项目,rspec我可以运行rake spec以运行所有测试.spec目标在哪里定义?

ruby rake ruby-on-rails rakefile

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

Rspec + Capybara:如何点击警告框

我已经通过了水豚的帖子+点击提示框,但似乎没有任何工作.以下是我的情景:

场景:当我单击更新按钮时出现一个警告框,其中包含"确定"和"取消"按钮.单击"确定",然后出现新表单.

  1. 我正在编写请求规范,即使用rspec和capybara.主要问题是单击警告框:以下是我的代码:

     context "update" do
       before(:all) do
         Capybara.current_driver = :selenium
       end
       after(:all) do
         Capybara.use_default_driver
       end
    
       it "update user to trainer" do
         click_button('Search')
         sleep 3 
         page.evaluate_script('data-confirm = function() { return true; }')
         page.click('OK')      
         click_button('Upgrade')
       end
     end
    
    Run Code Online (Sandbox Code Playgroud)

    但执行脚本会给我以下错误:

    失败/错误:page.evaluate_script('data-confirm = function(){return true;}')Selenium :: WebDriver :: Error :: UnexpectedJavascriptError:左侧无效赋值#./ spec/summary/user_upgrades_spec.rb :30

  2. 对于第二个例子即

    page.driver.browser.switch_to.alert.accept

    我的代码:

     context "update" do
       before(:all) do
         Capybara.current_driver = :selenium
       end
       after(:all) do
         Capybara.use_default_driver
       end
       it "update user to trainer" do
         click_button('Search')
         sleep 3   
         click_button('Upgrade') 
         page.driver.browser.switch_to.alert.accept
       end
     end 
    
    Run Code Online (Sandbox Code Playgroud)

我收到错误: …

rspec capybara

38
推荐指数
6
解决办法
3万
查看次数

RSpec设置会话对象

我正在尝试从我的控制器规范中设置会话对象.

it 'use invalid coupon' do
  session[:coupon] = 'abcd'      
  Service.any_instance.stub(:validate_coupon).with(session[:coupon]).and_return('abcd')

  get :index
  expect(flash[:coupon__notice]).to be nil
end
Run Code Online (Sandbox Code Playgroud)

但是当我检查会话而不是@coupon对象时,我得到一个包含字符串'coupon'的@data,并且测试失败.

session rspec ruby-on-rails object

32
推荐指数
3
解决办法
3万
查看次数

将Chrome设置为RSpec/Capybara的默认浏览器

我在使用Chrome在Ubuntu 13.10 64位上使用RSpec/Capybara时遇到了一些麻烦.默认情况下它启动Firefox - 我们试图通过多种方式改变它,包括:

http://actsasblog.ca/2011/09/28/how-to-use-chrome-with-capybara/

/home/.../xxx_spec.rb:8:in `<top (required)>': undefined local variable or method `“chromedriver”' for main:Object (NameError)

我们还尝试过:

require 'capybara/rspec'
require 'rspec'
require 'selenium-webdriver'

Capybara.register_driver :selenium do |app|
  Capybara::Selenium::Driver.new(app, :browser => :chrome)
end
Run Code Online (Sandbox Code Playgroud)

/home/ubuntu/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.39.0/lib/selenium/webdriver/chrome/service.rb:50:in `start': unable to connect to chromedriver http://127.0.0.1:9515 (Selenium::WebDriver::Error::WebDriverError)

使用Chrome需要另外一步吗?我是Selenium的新手.

selenium rspec google-chrome capybara

25
推荐指数
3
解决办法
3万
查看次数

当列错误配置为Integer时,多态关联插入0而不是引发错误

这是一个让我困扰了一段时间的人,虽然回想起来应该是显而易见的.我收到了错误消息

NoMethodError: undefined method `constantize' for 0:Fixnum
Run Code Online (Sandbox Code Playgroud)

通过多态关联访问模型时 原来belongs_to关联一侧的表有一个整数type列而不是一个字符串.

很容易修复,但似乎Rails应该在这种情况下引发错误 - 相反,它很乐意在类型列中添加0行.

ruby-on-rails

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

最简单的Emacs语法高亮教程?

我想只为Emacs创建一个突出显示次要模式的语法.我有O'Reilly的"编写GNU Emacs Extensions",但它没有深入细节.是否有一个简单的教程,用于真实或伪造的编程语言高亮模式?

谢谢

emacs elisp emacs23 xemacs

12
推荐指数
2
解决办法
5196
查看次数

连接表中的记录在HABTM关联中自动销毁?

假设我有一个用户拥有并属于许多角色的关联.当我销毁用户时,连接表中的记录是否也会被自动删除?或者我需要使用:dependent =>:destroy?如果我摧毁一个角色怎么办?

class User < ActiveRecord::Base
   has_and_belong_to_many :roles # need to use :dependent => :destroy to remove join record?
end

class Role < ActiveRecord::Base
   has_and_belong_to_many :users # need to use :dependent => :destroy to remove join record?
end
Run Code Online (Sandbox Code Playgroud)

join ruby-on-rails has-and-belongs-to-many destroy

11
推荐指数
1
解决办法
7276
查看次数

如何记录rails应用程序?

我刚刚开始记录rails应用程序.我知道这实际上是由rdoc完成的,所以我遵循了一些关于语法的rdoc指南等等,但当我试图描述模型的属性,验证和模型之间的关系时,我陷入困境,主要是因为这些东西都是ActiveRecord的一部分.所以我想知道是否有一些关于如何记录rails应用程序的指南或良好实践,或者是否有我遗漏的东西?

我知道我可以把所有这些都放在类描述中,但是我想知道是否有一种方法与声明本身(has_many,validates_presence_of等)更紧密地联系在一起,那么属性呢?

activerecord ruby-on-rails rdoc

10
推荐指数
1
解决办法
4429
查看次数

如何解决Rails模型命名空间冲突

到目前为止的故事:

我有一个名为"Term"的模型的rails应用程序.一切都很顺利,直到尝试安装Cucumber.跑步时

rake cucumber
Run Code Online (Sandbox Code Playgroud)

我明白了

Term is not a class (TypeError)
Run Code Online (Sandbox Code Playgroud)

这是因为Cucumber包含另一个gem,'term-ansicolor'(在控制台中执行漂亮的彩色文本输出),term-ansicolor定义了一个名为"Term"的模块.在包含Rails模型之前,Cucumber包括term-ansicolor,因此在加载"Term"模型时,"Term"已被定义为模块.顶级模块和类在Ruby中不能具有相同的名称,因此发生冲突.

我不想重命名模型,而是开始修补term-ansicolor gem.事实证明这比我想象的更难.我将Term模块名称更改为"ANSITerm",但我无法弄清楚如何让Cucumber加载我修改过的gem,我已将其放入RAILS_ROOT/vendor/gems/term-ansicolor.

有任何想法吗?我吠叫错了树吗?

ruby namespaces ruby-on-rails cucumber collision

9
推荐指数
1
解决办法
4211
查看次数

什么时候线程框架比事件驱动框架更好?(即什么时候rails比node.js好?)

我理解什么是线程框架(Rails,Django,Symfony2,...).我理解事件驱动的框架是什么(Node.js,EventMachine,Twisted,...)以及为什么它对于实时,聊天,速度......而言非常好.此外,它们似乎不会对正常用例造成问题.所以:

  • 事件驱动框架的缺点是什么?
  • 我什么时候应该更喜欢Rails到Node.js?
  • 为什么不是所有使用EventMachine,Twisted或Node.js编写的新Web服务器?
  • 诸如Django或Rails等着名框架会成为事件驱动还是死亡?

django frameworks ruby-on-rails event-driven node.js

9
推荐指数
1
解决办法
3539
查看次数