小编Dun*_*ock的帖子

Ruby:如何动态创建现有类的子类?

我正在编写使用Object.const_set创建新类的Ruby代码,它非常适合创建新类并实例化它们的实例.但我希望这些新类继承自我已经硬编码的类.我找不到这样做的方法.这是我的代码:

def create_model_class(klass_name, klass_vars)
    klass = Object.const_set(klass_name, Class.new)
    klass.class_eval do
        define_method(:initialize)
            klass_vars.each_with_index do |name, i|
                instance_variable_set("@"+name[i], name[i])
            end
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

ruby metaprogramming

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

在触发JQuery幻灯片之前加载所有图像

我修改了Visual Idiot的Unslider(http://unslider.com/)以适应基于图像比例的多宽度幻灯片,但是在这个过程中,我遇到了一个错误导致幻灯片加载为微小的缩略图(我认为在图像没有一直加载的情况下).这是问题#1.所以我试图等到所有图像都加载完毕.但我还没有找到成功做到这一点的方法.这是问题#2.

这是我在Unslider init()函数中添加的代码:

_.init = function(el, o) {
  //  Check whether we're passing any options in to Unslider
  _.o = $.extend(_.o, o);

  _.el = el;
  _.ul = el.find(_.o.items);
  _.max = [el.outerWidth() | 0, el.outerHeight() | 0];
  _.max = [100, 100];
  _.li = _.ul.find(_.o.item).each(function(index) {
    var me = $(this);
    var an_image = me.find('img');
    an_image.load(function() {
      width = an_image[0].naturalWidth,
      height = an_image[0].naturalHeight;

      setSlideHeight(an_image, width, height, 300, 20);
      if ( an_image.parent().parent().is(":last-child") ) {

        _.el.css("width", 900);
      }
    })  

    //  Set the …
Run Code Online (Sandbox Code Playgroud)

css jquery ruby-on-rails

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

RSpec:期望引发错误的方法失败

我试图在某些条件下测试错误是否正确.在此规范中,引发了错误,但测试仍然失败.我究竟做错了什么?

require 'spec_helper'

describe USBTeensyRenderer do 
  context 'when the correct USB port name is not present' do
    it 'raises an error on instantiation' do
      expect(renderer = USBTeensyRenderer.new).to raise_error(USBInitError)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

并且'bundle exec rspec'的终端输出:

Failures:

  1) USBTeensyRenderer when the correct USB port name is not present raises an error on instantiation
     Failure/Error: expect(renderer = USBTeensyRenderer.new).to raise_error(USBInitError)
     USBInitError:
       USB output couldn't be initialized
     # ./lib/ivan/view/renderers/usb_teensy_renderer.rb:9:in `rescue in initialize'
     # ./lib/ivan/view/renderers/usb_teensy_renderer.rb:6:in `initialize'
     # ./spec/models/usb_teensy_renderer_spec.rb:10:in `new'
     # ./spec/models/usb_teensy_renderer_spec.rb:10:in `block (3 levels) in <top …
Run Code Online (Sandbox Code Playgroud)

ruby rspec

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

Rails 500错误:application.css未预编译

我已经在Mediatemple的Ubuntu linux box(ve)服务器上使用Apache在Passenger上运行Rails.当我尝试加载任何页面时,我的应用程序给了我500错误(Rails错误,而不是Apache错误):http://www.mvngmtns.com

我在config/environments/production.rb中看到一篇关于更改此行的文章:

    config.assets.compile = true
Run Code Online (Sandbox Code Playgroud)

但这并没有解决我的问题.有人可以帮忙吗?

我的development.log:

Started GET "/" for 72.225.170.239 at 2012-06-29 15:28:43 -0700
Processing by HomeController#index as HTML
Rendered application/_logo.html.erb (0.6ms)
Rendered application/_navbar.html.erb (1.4ms)
Rendered home/index.html.erb within layouts/application (2.6ms)
Completed 500 Internal Server Error in 6ms

ActionView::Template::Error (application.css isn't precompiled):
2: <html>
3: <head>
4:   <title>Moving Mountains<%= get_title %></title>
5:   <%= stylesheet_link_tag    "application", :media => "all" %>
6:   <%= javascript_include_tag "application" %>
7:   <%= csrf_meta_tags %>
8:
app/views/layouts/application.html.erb:5:in `_app_views_layouts_application_html_erb___2841110860658336572_129641540'
app/controllers/home_controller.rb:6:in `index'
Run Code Online (Sandbox Code Playgroud)

按要求,跑了 …

apache ruby-on-rails passenger precompiled

5
推荐指数
2
解决办法
7248
查看次数

如何在 Google Ngrams 中搜索“过时”的单词和短语?

我想编写一个应用程序来搜索谷歌的 Ngram 数据,以返回过去比现在更流行的单词和短语,在任意的年份范围内,按任意百分比,比现在更流行。

例如:https : //books.google.com/ngrams/graph?content=cowabunga&year_start=1950&year_end=2000&corpus=15&smoothing=3

理想情况下,我希望能够在不预先指定的情况下找到这些单词和短语。任何人都可以帮助我想出一种使用下载的 Ngrams 数据副本来做到这一点的方法吗?

google-api n-gram

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

使用Carrierwave上传到多个S3存储桶

我将Ryan Bates在Carrierwave上的RailsCast扩展到多个文件上传器,每个文件上传器都应该上传到自己的S3存储桶.我已经有一个工作了.我的配置如下所示:

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',
    :aws_access_key_id      => '(my access key)',
    :aws_secret_access_key  => '(my secret key)'
  }
  config.fog_directory  = 'my-bucket'
  config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}
end
Run Code Online (Sandbox Code Playgroud)

我的文件上传器类看起来像这样:

class ImageUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick
  process :resize_to_fit => [1024, 1024]
  process :quality => 70
  storage :fog
end
Run Code Online (Sandbox Code Playgroud)

在我的班上,我打电话

mount_uploader :image, ImageUploader
Run Code Online (Sandbox Code Playgroud)

是否可以在每个上传的基础上更改config.fog_directory?在类定义里面?别的地方?谢谢你的帮助.

ruby-on-rails amazon-s3 ruby-on-rails-3 carrierwave

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