小编Pla*_*Ton的帖子

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

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

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

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

干杯...

macos terminal

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

Rails:Factory Girl无法排序

刚刚开始工厂女孩,我遇到了排序问题:具体来说,它没有增加.我已经尝试更改数据库类型,从factory_girl 1.3.2更新到2.0.0.beta1(并且factory_girl_rails从1.0更新到1.1.0.beta1),尝试重新创建数据库,但同样的问题 - 序列不会增加和第一次插入唯一字段后,我收到验证错误.

任何协助非常感谢.代码和跟踪堆栈如下:

/spec/models/user.rb

require 'spec_helper'

describe User do   describe "test user factory is correct" do
    user = Factory(:user)

    it "should have an email ending in example.com" do
      #user.email.should match "test2@example.com"
    end

    it "should have a password of foobar" do
      user.password.should == 'foobar'
    end

    it "should have a password confirmation field of foobar" do
      user.password_confirmation.should == 'foobar'
    end
    end

end
Run Code Online (Sandbox Code Playgroud)

/spec/factories/user.rb

Factory.define :user do |f|
    f.sequence(:email) { |n| puts "Email ##{n}"; "factory_#{n}@example.com" }
    f.password 'foobar'
    f.password_confirmation { |p| …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails factory-bot

6
推荐指数
2
解决办法
9337
查看次数

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
查看次数

高级Rails调试的策略建议?

我已经在Ruby/Rails中编写了将近9个月的编码,在Python之前花了数年时间.

虽然我真的很喜欢Rails,但有一个地方让我经常感到沮丧:追逐顽固的错误.在其他语言中,我几乎可以一直追查困难,没有太多的麻烦,但是当我碰了壁调试轨道,我倾向于真的碰了壁.我想我要问的是:高级rails用户采用什么策略来追踪更顽固的错误?

目前我的做法通常是:

  1. 检查堆栈跟踪(这里解决了最简单的错误)

  2. 运行debugger/pry/console并检查环境,必要时逐步完成每个步骤

  3. 谷歌一下

  4. 发布堆栈溢出/ github问题

  5. 拖延和/或大肆宣誓

如果任何先进的铁路运营商分享他们追逐更顽固的错误的策略,我会非常感激.简而言之,当跟踪/调试器没有提供任何线索时,你会怎么做?

debugging ruby-on-rails

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

优雅地处理嵌套哈希中的空白值

我相信我以前见过这个优雅的解决方案,但我找不到它:

我有一个rails控制器,可能或者可能没有以下hash元素:

myhash[:parent_field]
Run Code Online (Sandbox Code Playgroud)

在该父字段内,子元素也可以为空.我目前通过(非常丑陋的)方法检查:

if (!myhash[:parent_field] || !myhash[:parent_field][:child_field] || myhash[:parent_field][:child_field].blank?)
Run Code Online (Sandbox Code Playgroud)

哪个有效,但我认为 - 当然 - 必须有一个更优雅的方式.只是重申:

  • myhash [:parent_field]可能存在也可能不存在
  • 如果确实存在,myhash [:parent_field] [:child_field]可能存在也可能不存在
  • 如果存在,则可能是空白,也可能不是空白.

ruby ruby-on-rails

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

使用RSpec测试CSV.generate

我在rails 3.1项目中有以下帮助器 - 我只是想知道是否有办法测试CSV.generate调用.我想说我有一些想法怎么做,但事实是我甚至不知道从哪里开始.任何想法都赞赏.

require 'csv'

module Admin::PurchasesHelper
  def csv_purchase_list
    columns = ['course', 'amount', 'first_name', 'last_name', 'contact_phone', 'contact_mobile', 'created_at']
    CSV.generate(:col_sep => ";", :row_sep => "\r\n", :headers => true, :write_headers => true, :return_headers => true) do |csv|
      csv << ["Course", "Amount", "First Name", "Last Name", "Phone", "Mobile", "Created At"]
      Purchase.all.each do |p|
        csv << columns.collect{ |name| p.send(name)}
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby csv rspec ruby-on-rails

5
推荐指数
1
解决办法
7435
查看次数

Rails respond_with和Rspec控制器:测试不成功的更新

我正试图在Rails控制器中使用respond_to切换到respond_with.一切顺利,除了测试控制器规格中的无效保存.这是一个例子:

描述MyController做...

describe "PUT update" do
    context "with invalid attributes" do
      it "should re-render the edit page" do
        style = stub_model(Style)
        Style.stub(:find) { style } 
        Style.any_instance.stub(:save).and_return(false)
        put :update
        response.should render_template(:edit)
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这与我的旧的respond_to样式更新操作一样正常,但是使用respond_with,我得到了

失败/错误:response.should render_template("edit")

所以,简而言之 - 我该如何测试?...或者我应该假设render_with知道它在做什么而不是测试?有什么一般建议?

提前干杯

PS:更新动作:

  def update
    @style = Style.find(params[:id])
    flash[:notice] = "Style updated" if @style.update_attributes(params[:style])
    respond_with(@style)
  end
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails respond-with

5
推荐指数
1
解决办法
1289
查看次数

Ruby:标准递归模式

我常常在ruby中加入的一件事是递归模式.例如,假设我有一个数组,并且可能包含数组作为无限深度的元素.所以,例如:

my_array = [1, [2, 3, [4, 5, [6, 7]]]]
Run Code Online (Sandbox Code Playgroud)

我想创建一个可以将数组展平的方法[1, 2, 3, 4, 5, 6, 7].

我知道.flatten会做这个工作,但这个问题是我经常遇到的递归问题的一个例子 - 因此我试图找到一个更可重用的解决方案.

简而言之 - 我猜这种东西有一个标准模式,但我无法想出任何特别优雅的东西.任何想法都赞赏

ruby recursion design-patterns

5
推荐指数
1
解决办法
1818
查看次数

法术/水豚:无法登录:js => true

我已经使用了水豚一段时间,但我是巫术的新手.我有一个非常奇怪的问题,如果我在没有Capybara的情况下运行规范:js => true功能我可以正常登录,但是如果我尝试在规范中指定:js => true,则无法找到用户名/密码.

这是身份验证宏:

module AuthenticationMacros
  def sign_in
    user = FactoryGirl.create(:user)
    user.activate!
    visit new_sessions_path
    fill_in 'Email Address', :with => user.email
    fill_in 'Password', :with => 'foobar'
    click_button 'Sign In'
    user
  end
end
Run Code Online (Sandbox Code Playgroud)

在这样的规格中称为:

feature "project setup" do
  include AuthenticationMacros

  background do
    sign_in
  end

  scenario "creating a project" do
    "my spec here"
  end
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常.但是,如果我改变了场景规范(在这种情况下)

scenario "adding questions to a project" do
Run Code Online (Sandbox Code Playgroud)

scenario "adding questions to a project", :js => true do
Run Code Online (Sandbox Code Playgroud)

登录失败,并出现"用户名/密码错误"组合.字面上唯一的变化是:js => true.我正在使用默认的capybara javascript驱动程序.(加载Firefox)

有什么想法可以在这里发生什么?我完全难过了.我正在使用Capybara 2.0.1,Sorcery 0.7.13.登录页面上没有javascript,在点击"登录"之前save_and_open_page确认在用户名/密码字段中输入了正确的详细信息.任何建议真的很感激 - …

javascript ruby-on-rails capybara sorcery

5
推荐指数
1
解决办法
1034
查看次数

Rails 7/StimulusJS 相对导入:适用于开发,但不适用于生产

几年后我再次使用 Rails(最后一次使用 Rails 4)。我有多个刺激控制器引用一个名为metric_defaults.js. 该文件仅包含一组平面定义,例如:

Chart.defaults.elements.line.tension = 0.25;
Chart.defaults.elements.line.borderWidth = 5;
Run Code Online (Sandbox Code Playgroud)

在 Rails 7 开发环境中,此导入可以很好地与import '../metric_defaults.js'每个刺激控制器配合使用,但在生产中我得到:

Failed to load resource: the server responded with a status of 404 (Not Found) (metric_defaults.js)
Run Code Online (Sandbox Code Playgroud)

我花了一天的时间试图找出这个问题,但所有努力都失败了。一些花絮:

  • 我正在使用标准的 Rails 7 配置(导入映射、链轮)
  • 我已经确认生产服务器正在正确预编译资产。这包括 metric_defaults.js,但是它的名称中有一个指纹(metric_defaults-9032be9e....js),而 404 似乎正在尝试访问未指纹的文件?
  • 生产服务器是一个 Heroku 实例
  • metric_defaults.js 文件的路径是 app/javascript/metric_defaults.js
  • 刺激控制器位于 app/javascript/controllers/ 中
  • 如前所述,在开发中运行良好
  • 我不知所措

任何想法表示赞赏

ruby-on-rails asset-pipeline stimulusjs

5
推荐指数
1
解决办法
923
查看次数