小编asc*_*man的帖子

Rails错误:未安装ImageMagick/GraphicsMagick

当我在OSX上运行rails应用程序并尝试上传图像时出现此错误.

我有一个"产品"模型,我正在使用Mini_Magick和CarrierWave上传产品的图像.当我在我的ubuntu的笔记本电脑上创建一个产品时,它工作正常,但是当我在我的macbook上执行此操作时,它会抛出错误:

图像无法使用MiniMagick进行操作,也许它不是图像?原始错误:

未安装ImageMagick/GraphicsMagick

我已完成"捆绑安装"命令,一切正常......你知道可能是什么问题吗?

macos ruby-on-rails carrierwave minimagick

28
推荐指数
1
解决办法
2万
查看次数

Gem集成测试失败,找不到jQuery

我有一个名为" 神奇 " 的宝石,里面有一个虚拟应用程序来测试.在运行虚拟应用程序时,一切运行良好.

但是,当我运行测试时,单元测试工作正常,但集成测试(Capybara + Poltergeist)失败并显示以下消息:

Sprockets :: FileNotFound:找不到类型为'application/javascript'的文件'jquery'.

检查这些路径:

/ fantastic/spec/dummy/app/assets/images,/ fantastic/spec/dummy/app/assets/javascripts,/ fantastic/spec/dummy/app/assets/stylesheets,/ fantastic/app/assets/javascripts,/ fantastic/app/assets/stylesheets,/ fantastic/vendor/assets/javascripts

我的一些文件:

fantastic.gemspec

# ...
s.add_development_dependency "capybara"
s.add_development_dependency "poltergeist"
s.add_development_dependency "jquery-rails"
# ...
Run Code Online (Sandbox Code Playgroud)

规格/虚拟/应用/资产/ JavaScript的/ application.js中

//= require jquery // Error is produced in this line
//= require jquery_ujs
//= require fantastic
//= require_tree .
Run Code Online (Sandbox Code Playgroud)

问题是当运行rails服务器时一切正常,并且正确加载了jQuery(我在浏览器的控制台中测试了它).

知道测试中发生了什么吗?

编辑

我尝试创建自定义Capybara.app:

投机/ spec_helper.rb

ENV["RAILS_ENV"] = 'test'
# Require dummy Rails app
require File.expand_path("../../spec/dummy/config/environment", __FILE__)

require 'database_cleaner'
require …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails capybara poltergeist

12
推荐指数
1
解决办法
277
查看次数

从多个地方渲染javascript:Rails方式

我有一个通过javascript呈现的模态表单.该模型被称为.

# controllers/books_controller.rb

def new
  @book = Book.new
end

def create
  @book = Book.find(params[:id])
  @book.save
end
Run Code Online (Sandbox Code Playgroud)

我没有使用新的和编辑html,而是使用coffeescript:

# views/new.js.coffee

CustomModal.open "<%= j render('books/modal_form', book: @book) %>"
Run Code Online (Sandbox Code Playgroud)

-

# views/create.js.coffee

<% if @book.valid? %>
CustomModal.hide()
# Other callback scripts for showing alert, etc
<% else %>
# Script for showing errors in the modal
<% end %>
Run Code Online (Sandbox Code Playgroud)

以及触发模态的链接:

= link_to "Create Book", new_book_path, remote: true
Run Code Online (Sandbox Code Playgroud)

现在,我面临的问题是这个链接只是在书的列表页面上使用.因此,在创建图书时,js回调会触发警报并使用更改更新列表.

现在我必须在另一个页面中添加此按钮,其中没有列表,所以我需要一个不同的回调(无论哪个回调都没关系).

所以,我必须添加到create.js.coffee之类的东西:

# views/create.js.coffee

<% if @book.valid? %>
CustomModal.hide()
# if …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails coffeescript turbolinks

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

实体框架:导航属性问题

我正在使用Entity Framework代码优先,我有一个Course具有导航属性的类Students:

public virtual Collection<Student> Students { get; set;}
Run Code Online (Sandbox Code Playgroud)

它工作正常,但是当我访问此导航属性时,将从数据库中检索所有数据:

var allStudents = course.Students; // Here it retrieves the data
var activeStudents = allStudents.Where(n => n.Active); // Here it filter the data on memory
var listOfActiveStudents = activeStudents.ToList(); // It already has the data on memory.
Run Code Online (Sandbox Code Playgroud)

您可以想象,我需要在执行此操作时执行查询,.ToList()因为我不想Students从数据库中获取所有数据,只有活动数据库.

你知道我做错了什么吗?

.net entity-framework ef-code-first dbcontext

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

模式来呈现多个咖啡

我有一个task这是关系到模型userproject模型.

当我创建/更新任务时,我需要在视图异步中进行更新,不仅用于任务更改/添加,还包括项目和用户信息(因为某些数据也可能会更改).

我在控制器中有这个:

def create
  @task = Task.new(params[:task])
  @project = Project.find(params[:project_id])

  respond_to do |format|
    if @task.save
      format.html { redirect_to @task, notice: 'Task was successfully created.' }
      format.json { render json: @task, status: :created, location: @task }
    else
      format.html { render action: "new" }
      format.json { render json: @task.errors, status: :unprocessable_entity }
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我的任务/ create.js.coffee

# Update task table
$('#mytable').append("<%= j render(partial: 'tasks/task', locals: { t: @task }) %>")

# Update user data …
Run Code Online (Sandbox Code Playgroud)

javascript ruby-on-rails coffeescript ruby-on-rails-4

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

Rails 5:使用自定义文件夹无法自动加载

我有这门课:

# app/events/new_request.rb
class Events::NewRequest
end
Run Code Online (Sandbox Code Playgroud)

我将该文件夹添加到自动加载:

# config/application.rb
config.autoload_paths += %W( events/ )
Run Code Online (Sandbox Code Playgroud)

运行时rails c:

> Events::NewRequest
NameError: uninitialized constant Events
Run Code Online (Sandbox Code Playgroud)

问题是如果我在定义类时不使用名称空间"Events",它会成功自动加载类.

ruby ruby-on-rails

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

Dapper.NET:varchar(4000)默认值

我正在使用Dapper.NET,当我执行下一个代码时:

using (SqlConnection con = new SqlConnection(connectionString))
        {
            con.Open();
            con.Execute(@" insert Clients(name) values(@Name)", new {Name = "John"});
            con.Close();
        }
Run Code Online (Sandbox Code Playgroud)

它执行的查询是下一个:

(@Name nvarchar(4000)) insert Clients(name) values(@Name)
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么Dapper将字符串翻译成nvarchar(4000)?我的意思是......在数据库上,名字字段是nvarchar(50) ......

有人面对这个错误吗?你是如何解决的?你找到了另一个这样的bug吗?

.net c# sql-server ado.net dapper

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

乘客和rbenv问题-库版本不兼容

最近,我从RVM移至Rbenv。我跑了一堆不同的Rails应用程序(每个人都有不同的红宝石版)与passengernginx。但是,尝试加载两个应用程序时出现错误:

/user_folder/.rbenv/versions/2.3.3/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': incompatible library version - /usr/local/Cellar/passenger/6.0.2_1/libexec/buildout/ruby/ruby-2.3.3-x86_64-macosx/passenger_native_support.bundle (fatal)
    from /user_folder/.rbenv/versions/2.3.3/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/Cellar/passenger/6.0.2_1/libexec/src/ruby_supportlib/phusion_passenger/native_support.rb:427:in `load_native_extension'
    from /usr/local/Cellar/passenger/6.0.2_1/libexec/src/ruby_supportlib/phusion_passenger/native_support.rb:103:in `load_from_buildout_dir'
    from /usr/local/Cellar/passenger/6.0.2_1/libexec/src/ruby_supportlib/phusion_passenger/native_support.rb:39:in `try_load'
    from /usr/local/Cellar/passenger/6.0.2_1/libexec/src/ruby_supportlib/phusion_passenger/native_support.rb:50:in `start'
    from /usr/local/Cellar/passenger/6.0.2_1/libexec/src/ruby_supportlib/phusion_passenger/native_support.rb:443:in `<top (required)>'
Run Code Online (Sandbox Code Playgroud)

其他应用程序运行良好,而当我使用webrick(独立)时,这些应用程序也可以运行。但是由于某种原因,我在使用时遇到了问题passenger

我不确定这是否是巧合,但是我遇到问题的两个应用程序都在运行ruby v2.3.3

有什么想法吗?

ruby ruby-on-rails passenger nginx rbenv

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

Rails sass 编译中出现“错误:未定义的变量”

我正在构建一个 Rails 应用程序并遇到一些奇怪的 sass 编译问题。

我的设置:

  • 轨道 6.1.3
  • 红宝石3.0.0
  • sass-rails 6.0.0
  • sassc-rails 2.1.2

application.scss基本上加载了一些设置一些变量的 sass 文件,最后导入了layout.scss有效使用导入变量的文件。

// application.scss
@import "normalize";
@import "variables/colors";
@import "variables/typography";
@import "variables/sizes";
@import "layout";
Run Code Online (Sandbox Code Playgroud)
// variables/_typography.scss
$ui-font-family: "Poppins", sans-serif;
$ui-font-family-title: "Lato", sans-serif;
Run Code Online (Sandbox Code Playgroud)
// layout.scss
h1, h2, h3, h4, h5, h6 {
  font-family: $ui-font-family-title;
}
Run Code Online (Sandbox Code Playgroud)
// views/layouts/application.html.erb
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
Run Code Online (Sandbox Code Playgroud)

一开始它有效,但后来我注意到有时我会收到错误消息

Error: Undefined variable: "$ui-font-family-title".
        on line 3:16 of app/assets/stylesheets/layout.scss
>>   font-family: …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails sass sprockets

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

Dapper:单元测试SQL查询

我开始使用DAPper,微型ORM,我使用Dapper Rainbow.我想测试查询和它们检索的数据.

我的意思是,例如,我有UserService和方法GetAll(),我想测试sql查询是从一些列表中检索所有用户(而不是从数据库,因为我希望测试快速).你知道我怎么做的吗?

我的服务类(以及我想测试的方法):

public static class UserService{
    public static IEnumerable<User> GetAll(){
        return DB.Users.All();
    }
}
Run Code Online (Sandbox Code Playgroud)

您对单元测试查询和数据检索有什么建议吗?

谢谢

.net c# tdd unit-testing dapper

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

ActiveRecord:与无作用域进行连接不会跳过default_scope

default_scope我在尝试跳过 ActiveRecord 时遇到一些问题join

尽管代码库相当大,但我只是展示基础知识,因为我认为它很好地说明了问题所在:

class Client
  belongs_to :company
end

class Company
  default_scope { where(version_id: nil) }
end
Run Code Online (Sandbox Code Playgroud)

我正在构建一个复杂的报告,因此我需要连接多个表并对其进行过滤。但是,在获取 s 时我无法成功跳过默认范围Client

Client.joins(:company).to_sql
# SELECT clients.* FROM clients INNER JOIN companies
# ON companies.id = clients.company_id AND companies.version_id IS NULL
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它会自动包含Company default_scope. 所以我尝试了这个:

Company.unscoped { Client.joins(:company) }.to_sql
# SELECT clients.* FROM clients INNER JOIN companies
# ON companies.id = clients.company_id AND companies.version_id IS NULL
Run Code Online (Sandbox Code Playgroud)

unscoped同样,即使与块一起使用,我也得到了相同的结果。

然后我决定向模型添加一个新的关联,其unscoped范围:

class Client
  belongs_to :company
  belongs_to :unscoped_company, …
Run Code Online (Sandbox Code Playgroud)

ruby activerecord ruby-on-rails

4
推荐指数
1
解决办法
1709
查看次数

Rails 5:远程表单失败

我有一个用于在我的 rails 应用程序中创建产品的表单:

= form_for product, url: url, method: :post, html: { class: 'product-form' }, remote: true do |f|

  .row
    .col-xs-12.col-sm-6
      .form-group.required
        = f.label :name
        = f.text_field :name, autofocus: true, class: 'form-control'
    .col-xs-12.col-sm-6
      .form-group.required
        = f.label :price
        .input-group
          .input-group-addon $
          = f.number_field :price, class: 'form-control'

  .row
    .col-xs-12
      .form-group
        = f.label :description
        = f.text_area :description, class: 'form-control'

  .row
    .col-xs-12
      .form-group
        = label_tag :images, 'Images'
        = f.file_field :images, multiple: true, class: 'form-control'

  .row
    .col-xs-12.text-right
      = f.submit "Cancel", class: 'btn btn-default', …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails heroku amazon-s3 carrierwave ruby-on-rails-5

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