在Linux上使用几年后,我只是干涉OSX.有很多我喜欢的东西,但是让我失望的一件事是,如果我通过快捷方式/聚光灯/快速银行运行'terminal'命令,它会把我带到已经有一个终端实例打开的任何空间中的任何现有终端.
我经常喜欢弹出一个终端,运行一个快速命令,然后再次关闭它,一直呆在我碰巧在的任何桌面空间.
...那么,我怎么在Mac上这样做?
干杯...
刚刚开始工厂女孩,我遇到了排序问题:具体来说,它没有增加.我已经尝试更改数据库类型,从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) 我正在尝试运行以下规范
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 - 我将其缩小如下:
如果有人对帖子失败的原因有任何想法,我会非常感激.我猜测(并且原谅 - 我没有查看'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) 我已经在Ruby/Rails中编写了将近9个月的编码,在Python之前花了数年时间.
虽然我真的很喜欢Rails,但有一个地方让我经常感到沮丧:追逐顽固的错误.在其他语言中,我几乎可以一直追查困难,没有太多的麻烦,但是当我碰了壁调试轨道,我倾向于真的碰了壁.我想我要问的是:高级rails用户采用什么策略来追踪更顽固的错误?
目前我的做法通常是:
检查堆栈跟踪(这里解决了最简单的错误)
运行debugger/pry/console并检查环境,必要时逐步完成每个步骤
谷歌一下
发布堆栈溢出/ github问题
拖延和/或大肆宣誓
如果任何先进的铁路运营商分享他们追逐更顽固的错误的策略,我会非常感激.简而言之,当跟踪/调试器没有提供任何线索时,你会怎么做?
我相信我以前见过这个优雅的解决方案,但我找不到它:
我有一个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)
哪个有效,但我认为 - 当然 - 必须有一个更优雅的方式.只是重申:
我在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) 我正试图在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) 我常常在ruby中加入的一件事是递归模式.例如,假设我有一个数组,并且可能包含数组作为无限深度的元素.所以,例如:
my_array = [1, [2, 3, [4, 5, [6, 7]]]]
Run Code Online (Sandbox Code Playgroud)
我想创建一个可以将数组展平的方法[1, 2, 3, 4, 5, 6, 7].
我知道.flatten会做这个工作,但这个问题是我经常遇到的递归问题的一个例子 - 因此我试图找到一个更可重用的解决方案.
简而言之 - 我猜这种东西有一个标准模式,但我无法想出任何特别优雅的东西.任何想法都赞赏
我已经使用了水豚一段时间,但我是巫术的新手.我有一个非常奇怪的问题,如果我在没有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确认在用户名/密码字段中输入了正确的详细信息.任何建议真的很感激 - …
几年后我再次使用 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)
我花了一天的时间试图找出这个问题,但所有努力都失败了。一些花絮:
任何想法表示赞赏
rspec ×3
ruby ×3
capybara ×1
csv ×1
debugging ×1
factory-bot ×1
javascript ×1
macos ×1
paperclip ×1
recursion ×1
respond-with ×1
sorcery ×1
stimulusjs ×1
terminal ×1