小编Pla*_*Ton的帖子

Rails RSpec路由:测试操作:除了不路由

相当简单的问题(我想过),但我遇到了一些问题:

在Rails 3.1.0.rc6/RSpec 2.6.0中,我正在尝试测试我的'产品'资源的路由,如下所示:

resources :products, :except => [:edit, :update]
Run Code Online (Sandbox Code Playgroud)

有效操作的路由有效,但我想确保编辑和更新路由不可调用.这是我正在尝试的:

it "does not route to #edit" do
  lambda { get("/products/1/edit") }.should raise_error
end
Run Code Online (Sandbox Code Playgroud)

失败/错误:lambda {get("/ products/1/edit")}.应该raise_error预期异常但没有引发任何内容#./ spec /routing/products_routing_spec.rb:11:在`block(3 levels)in'

......然而,当我跑步的时候

it "does not route to #edit" do
  get("/products/1/edit").should_not route_to("products#edit", :id => "1")
end
Run Code Online (Sandbox Code Playgroud)

我明白了

失败/错误:get("/ products/1/edit").should_not route_to("products#edit",:id =>"1")ActionController :: RoutingError:没有路由匹配"/ products/1/edit"

知道这里发生了什么吗?我猜这应该很简单,但我似乎无法弄明白.

routing rspec ruby-on-rails

8
推荐指数
1
解决办法
2916
查看次数

红宝石中的三向比较

什么是确保三个变量在ruby中都相等的最简洁方法?例如

dog = 'animal'
cat = 'animal'
chicken = 'animal'
shoe = 'clothing'

# Something like this...which doesn't work
dog == cat == chicken # true   
dog == cat == shoe # false
Run Code Online (Sandbox Code Playgroud)

ruby

8
推荐指数
1
解决办法
3648
查看次数

Rails has_many:through - >我应该保留主键列吗?

我有'作者'和'预订'表,加入了has_many:通过表'author_book'

据我所知,'author_book'表中的id主键字段没有任何意义......但在我提出这个想法之前,我只是想确认一下.那么,有没有理由将'id'列保留在has_many:through表中?

提前致谢...

ruby database-design ruby-on-rails primary-key has-many-through

8
推荐指数
1
解决办法
1240
查看次数

反应新手:在未链接的组件之间共享状态

我是一个React新手试图将React集成到Rails站点.我CommentForm在页面/ html的最顶部有一个组件Comments,在同一页面的底部有一个组件.目前,两者都是通过React-On-Rails的react_component方法呈现的.

问题是,一旦在提交表单CommentForm,我想改变this.state.commentsComments部分.我很熟悉确保将状态冒泡到一个共同的父组件的想法,但是目前,这两个组件没有共同的父组件(或任何父组件).

所以,由于免责声明我一直在学习React 2天而且很可能很困惑,克服这类问题的最佳做法是什么?我看到的选项:

  • 将整个rails视图重写为单个父组件,其中两个组件为下面的子组件.这听起来并不好玩 - 页面上两个组件之间的很多rails助手都会产生很多html
  • 使用Redux创建一个在两个组件之间共享的存储(???)
  • 以某种方式创建父组件,同时仍然在页面的不同部分呈现其他两个组件(?)
  • Comment从内部CommentForm或某些共享资源(例如:window范围)访问的状态属性,根据我的有限理解,它不是React Way

我猜这是一个常见问题,但我不确定解决它的一般智慧是什么.任何想法都赞赏.

ruby-on-rails reactjs react-redux react-on-rails

8
推荐指数
1
解决办法
227
查看次数

VSCode 新手:通过 Docker 进行远程 Jest/Node 调试

我最近从 Vim 切换到 VSCode,我正在尝试为通过 docker 运行的 jest 测试设置 VSCode 调试。

调试工作......有点。如果我想运行 Jest 测试并激活断点,我需要:

  1. 插入断点
  2. 通过vscode-jest-tests下面的launch.json 任务开始运行相关的 jest 测试
  3. Docker: Attach To Node在测试套件命中断点之前快速执行

显然不理想 - 我很想确保 VSCode 在运行时自动附加到调试器vscode-jest-tests。简而言之:在通过 Docker 运行 Jest 测试时,是否有一种简单的方法来附加 VSCode 调试器?

这是我当前的 launch.json 和 package.json 文件。非常感谢任何帮助:

启动文件

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "attach",
      "name": "Docker: Attach to Node",
      "port": 9229,
      "address": "localhost",
      "localRoot": "${workspaceFolder}",
      "remoteRoot": "/www",
      "protocol": "inspector"
    },
    {
      "type": "node",
      "request": "launch",
      "name": "vscode-jest-tests",
      "runtimeExecutable": "npm",
      "runtimeArgs": …
Run Code Online (Sandbox Code Playgroud)

debugging node.js docker jestjs visual-studio-code

8
推荐指数
1
解决办法
962
查看次数

Vim:Ruby和HTML omnicomplete没有显示本地方法/变量

希望有人可以通过Ruby和HTML在Vim中使用omnicomplete来解决一些非常不稳定的行为.

问题是Ctrl+ X Ctrl+ O似乎只返回非本地命令.方法和变量名称被省略.如果我输入Ctrl+ X Ctrl+,P它们会按预期显示,但omni只是没有提取它们.

一些东西:

  • --version确认Ruby in installed(+ruby)
  • 我安装了rails.vim,snipmate和supertab - 这些是我能想到的唯一安装的插件,可能会搞乱ruby omnifunc
  • HTML omni也有同样的问题
  • Php和Python omni仍然可以正常工作
  • 我已经尝试删除下面的HTML和Ruby相关部分,但没有区别 - 行为是一样的

.vimrc下面 - 任何帮助非常感谢

" Set backup directory so that .swp files aren't stored in work folders
set backup
set backupdir=$HOME/temp/vim_backups/
set directory=$HOME/temp/vim_swp/

filetype on
filetype off

call pathogen#runtime_append_all_bundles()

syntax on
filetype plugin indent on

" Necessary for lot of cool vim things
set nocompatible …
Run Code Online (Sandbox Code Playgroud)

html ruby vim autocomplete

7
推荐指数
1
解决办法
3908
查看次数

Rspec新手:嵌套控制器测试的快速示例?

我刚刚开始使用RSpec,并且在编写嵌套资源的控制器测试时遇到一些困难.我试过谷歌搜索,但没有太多运气.

有人可以提供"PUT更新"测试测试的基本示例,以确保更新嵌套资源吗?只是详细说明,我有像这样测试的等效(非嵌套)资源:

  def mock_post(stubs={})
    @mock_post ||= mock_model(Post, stubs).as_null_object
  end
  ...

  describe "PUT update" do
      describe "with valid parameters" do
        it "updates the requested post" do
          Post.stub(:find).with("14") { mock_post }
          mock_post.should_receive(:update_attributes).with({'these' => 'params'})
          put :update, :id => "14", :post => {'these' => 'params'}
        end
      end
  end
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一段时间来正确地对一个嵌套在Post下的"Comment"模型进行类似测试,但没有任何乐趣.任何建议赞赏.

rspec ruby-on-rails mocking stub

7
推荐指数
1
解决办法
3358
查看次数

修改Rails:高级用户如何找出需要更改的内容?

我已经使用Rails几个月了,我很乐意编写一个项目并根据我的需要操作Rails等.

最近我一直在努力提高一点,所以我试图修改/添加现有的rails代码库:添加新的表单助手方法,添加一个responds_to:pdf方法等等...我一直在有很多问题.

困难在于学习我需要修改的代码; 该代码所在的位置,以及如何确保我不会错过其他文件中的相关代码.我猜这是人们学会这样做的一种方式,但目前我大多只是猜测和希望.

我想我的问题是,Rails的人们如何去了解他们需要修改的代码在哪里编辑以及编辑它的方法?看起来这只是你需要从先前的熟悉程度中知道的东西,但我猜测必须有一个简单的方法来理解编辑的位置(以及什么).

任何想法都赞赏...欢呼

ruby ruby-on-rails

7
推荐指数
1
解决办法
123
查看次数

新的OSX用户:在当前空间中打开一个新的终端窗口(?)

在Linux上使用几年后,我只是干涉OSX.有很多我喜欢的东西,但是让我失望的一件事是,如果我通过快捷方式/聚光灯/快速银行运行'terminal'命令,它会把我带到已经有一个终端实例打开的任何空间中的任何现有终端.

我经常喜欢弹出一个终端,运行一个快速命令,然后再次关闭它,一直呆在我碰巧在的任何桌面空间.

...那么,我怎么在Mac上这样做?

干杯...

macos terminal

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

rspec控制器中的Rails'post'命令:文件没有通过.(是否有多部分设置?)

我正在尝试运行以下规范

describe "POST create" do
  describe "with valid params" do
    it "redirects to the created banner" do
      post :create, :banner => valid_attributes
      response.should redirect_to(admin_banner_url(Banner.last))
    end
  end
end


def valid_attributes
  demo_image = File.open(File.join(Rails.root, "spec", "samples", "laptop1.jpg"))
  {
    :name => 'Test Spec Banner',
    :bannerimage => demo_image
  }
end
Run Code Online (Sandbox Code Playgroud)

创建在validates_presence_of上验证失败:bannerimage - 我将其缩小如下:

  • 如果我从bannerimage中取出validates_presence_of验证,它可以工作,但横幅报告为'missing.png'
  • Banner.create!(valid_attributes)有效
  • 我上面只显示了一个规范,但问题出现在涉及该帖子的任何规范上:create,:banner => valid_attributes line
  • 我已经取出了对attr_accessible的所有引用......没有区别
  • 我已经尝试将validate_attributes切换到Factory.attributes_for(:banner),其中包含相同的文件信息:bannerimage
  • 表单在浏览器中工作得很好,包括图像上传/处理
  • 文件已存在?确认引用的文件确实存在.

如果有人对帖子失败的原因有任何想法,我会非常感激.我猜测(并且原谅 - 我没有查看'post'命令的内部工作情况,可能在这里),它在调用接受文件(?)时缺少某种"multipart"参数. .不能通过谷歌找到任何东西.

任何想法都赞赏 - 我完全被难过了.

控制器是完全未经修改的Rails 3.1脚手架资源.型号如下.

class Banner < ActiveRecord::Base
  # attr_accessible :name, :url, :bannerimage

  has_attached_file :bannerimage, :styles …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails paperclip

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