小编Sim*_*mmo的帖子

使用prawnto_2 gem加载图像时,RAILS_ROOT不再有效

我正在将我的应用程序从Rails 3.0升级到Rails 3.1.

在可能的情况下,我已经将旧插件分类为有利于宝石,其中包括用这个漂亮闪亮的新prawnto_2宝石替换旧的prawnto插件.

大多数事情似乎很好,但我不能像以前一样加载图像.我的PDF视图中的代码是

pdf.image open("#{RAILS_ROOT}/public/images/logo.png")
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误

uninitialized constant ActionView::CompiledTemplates::RAILS_ROOT
Run Code Online (Sandbox Code Playgroud)

我意识到图像文件的位置会随着我使用资源而改变,并且图像不再存储在公共文件夹中.

ruby-on-rails prawn prawnto

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

由于缺少方法而导致PanoJS失败

我在Rails 4项目中使用PanoJS,我收到以下错误:

TypeError: this.getLevel(...) is undefined
[panojs/pyramid_imgcnv.js][1] Line 92
Run Code Online (Sandbox Code Playgroud)

令我困惑的是,该方法似乎只是在上面几行宣布.

我把它作为PanoJS的一个问题提出来但我很怀疑它只是Rails和Javascript之间的配置错误.我之前已经设置并使用Rails 3项目.我使用了相同的JS文件并以相同的顺序加载它们.我看不出有什么不同(除了Rails版本),但一个版本有效,一个版本没有.

更新:

该元素被声明为(为了简洁,我将数据部分留下了);

%div{ id: "image_viewer", class: "viewer", data: {} }
Run Code Online (Sandbox Code Playgroud)

应该使用以下coffeescript触发JS,但目前我已将其注释掉,因为它只是添加了一个错误,因为addimagezoom不起作用.

jQuery(document).ready ($) ->

  $('#zoomimage').addimagezoom
  largeimage: $('#zoomimage').data('large-image-url'),
  magnifiersize: [$('#zoomimage').data('scaled-x-dimension'),$('#zoomimage').data('scaled-y-dimension')],
  zoomrange: [2, 10]
Run Code Online (Sandbox Code Playgroud)

更新2:

我意识到我在原帖中犯了一个错误.触发器实际上如下所示.以上是我试图让不同的观众工作的人工制品.下面是真正的触发器.

createViewer viewer, 'image_viewer', "#{url_base}/#{image_id}", "#{image_uuid}_", width,  height, target_format
Run Code Online (Sandbox Code Playgroud)

javascript ruby-on-rails

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

是否可以将Guard与并行测试结合使用?

我一直在寻找加速我的测试的方法,使用某种并行测试结合我目前的Guard设置.Guard-Hydra似乎是一个良好的开端,但Hydra宝石本身不再被维护,作者指导人们改为parallel_tests.

并行测试看起来非常好.我使用通常的rake任务在命令行工作,但我自己无法编写适当的后卫扩展.我一直对搜索'guard parallel_tests'时缺乏可用信息感到惊讶.当然,我不是唯一一个拥有多核PC的Rails开发人员,他们有兴趣加快测试速度吗?

rspec ruby-on-rails guard cucumber

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

什么可能导致计划的Rails活动作业消失?

我怀疑一些我们的积极工作正在消失,但我不知道为什么.下面是我发现它消失的证据,但不是原因.

我们的网站使用外部云打印服务.我们解雇工作,然后检查他们的状态.成功创建远程云打印后,我们会创建一个活动作业来立即检查状态.如果它已完成(成功或其他),则标记为如此.如果没有,那么检查状态作业会创建另一个,稍有延迟.每次延迟都会增加.

今天一个状态检查,日志显示等待达到128秒.但是没有发生下一次状态检查,并且日志中也没有错误.

我们使用延迟工作支持的积极工作.状态检查作业的代码如下.它无法在逻辑中看到任何不会导致正确收集状态检查或另一次等待尝试的缺陷.

class CheckCloudPrintStatusJob < ApplicationJob
  queue_as :default

  def perform(cloud_print, count = 0)
    cloud_print.update_status

    unless cloud_print.finished?
      count += 1
      wait = 2**(count-1)

      if count > 15
        cloud_print.mark_as_failed

        puts "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
        puts "~~~~~~~~~~~~~~~~~~ Cloud printing ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
        puts "Cloud print ##{cloud_print.id} failed"
        puts "Finally waited #{wait} seconds and then cancelled."
        puts "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
      else
        puts "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
        puts "~~~~~~~~~~~~~~~~~~ Cloud printing ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
        puts "Checking status of cloud print ##{cloud_print.id}"
        puts "Waiting #{wait} seconds and then retrying."
        puts "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

        CheckCloudPrintStatusJob.set(wait: wait.seconds).perform_later(cloud_print, count)
      end
    end …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails delayed-job rails-activejob

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

如何在Solr Cell中使用最新版本的Sunspot gem?

我一直在尝试(徒劳)获得与Solr Cell合作的最新版Sunspot gem(目前2.0.0.pre.111215,包含Solr 3.5).

目前我使用旧版本的Sunspot与Solr Cell结合使用以下插件 - https://github.com/chebyte/sunspot_cell.

我的Gemfile配置如下:

gem 'sunspot', '1.2.1'
gem 'sunspot_rails' 
Run Code Online (Sandbox Code Playgroud)

不幸的是,这种较旧的Solr/Solr单元组合不适用于许多较新的PDF文件.Apache推荐的解决方案是升级到两者的最新版本.

太阳黑子Solr Cell螺栓固定似乎没有得到很好的支持.最近更新的版本已从插件切换到宝石,但我仍然无法使用最新版本的太阳黑子宝石.https://github.com/zheileman/sunspot_cell

有没有人知道正确的Gemfile配置,以使元素很好地一起播放?我最接近的是这个.

gem 'sunspot_cell', :git => 'git://github.com/zheileman/sunspot_cell.git'
gem 'sunspot', :git => "git://github.com/sunspot/sunspot.git"
gem 'sunspot_rails', :git => "git://github.com/sunspot/sunspot.git", :require => "sunspot_rails"

group :development, :test do
  gem 'sunspot_solr', :git => "git://github.com/sunspot/sunspot.git"
end
Run Code Online (Sandbox Code Playgroud)

当我运行任何rake任务时,我收到以下错误.

uninitialized constant Sunspot::RSolr
Run Code Online (Sandbox Code Playgroud)

如果我暂时评论sunspot_cell gem,我可以运行Rake任务但实际搜索失败.

我已经尝试手动使用此gem中的Solr jar文件而不是sunspot_solr中捆绑的文件,但也没有成功.

solr ruby-on-rails sunspot solr-cell

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

如何让devise_async与Cucumber一起工作?

我按照自述文件按照devise_async的说明操作,我正在滚动Devise 2.1.2和delayed_job.在我的黄瓜测试中,我不再收到确认电子邮件作为注册过程的一部分.作为测试的一部分,我应该做些什么吗?我已经通过在我的测试环境中设置以下内容来设置延迟作业以跳过测试的实际延迟.

Delayed::Worker.delay_jobs = false
Run Code Online (Sandbox Code Playgroud)

但即使设置为真,它仍然会失败,尽管速度会更慢.如果我删除了devise_async gem和相关的行,那么一切都会重新开始.

谢谢,格雷姆

ruby-on-rails cucumber devise

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

如何使用google_premier设置地理编码器?

我已经阅读了地理编码器宝石的文档,其中说明您可以在使用Google Premier时设置密钥,客户端和渠道.

根据我在这里阅读的其他一些帖子,现在可以使用API​​密钥,只要你低于免费阈值,它仍然无法支付.我们需要这样做,因为我们主办Heroku并且我们一直在达到我们的每日限额.我们不是自己,但没有任何其他身份识别,我们可能达到了与其他Heroku网站共享的IP所确定的限制.使用密钥有助于识别我们,从而使我们无法达到极限.

但是,当我查看Google API的注册页面时,对于已安装的应用,网络应用等,有一系列令人困惑的客户端ID,api密钥和机密信息.哪种组合是使地理编码器迸发生命所需的组合?

google-maps ruby-on-rails google-maps-api-3 rails-geocoder

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

为什么我的根节点最后将自己作为带有acts_as_tree的parent_id?

我有一个现有的树结构,我想添加一个新的根并将现有的根向下移动一个.我写了一个rake任务,除了一件事情以外还可以正常工作.

新的root以一个parent_id结束,该parent_id匹配它的新id而不是NULL.成功更改现有根以将新根作为父级.

# Rake task
desc "Change categories to use new root"
task :make_new_category_root => :environment do
  Company.all.each do |company|
    current_roots = company.root_categories
    new_root = Category.new(name: "New root")
    new_root.company = company
    new_root.parent = nil
    if new_root.save
      current_roots.each do |current|
        current.parent = new_root
        current.save
      end
    end
  end

# Category class, abbreviated
class Category < ActiveRecord::Base
  include ActsAsTree
  acts_as_tree :order => "name"

  belongs_to :company, touch: true
  validates :name, uniqueness: { scope: :company_id }, :if => :root?      
  scope :roots, where(:parent_id => nil)      
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails acts-as-tree

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

在ruby .gemspec文件中,如何指定依赖项的多个版本?

我正在尝试修改一个当前依赖于activeresource定义为的gem:

s.add_dependency              "activeresource", "~> 3.0"
Run Code Online (Sandbox Code Playgroud)

为了让gem使用Rails 4,我需要扩展依赖项以使用activeresource的版本3或4.我不想简单地添加以下内容,因为它可能会在以后引起问题:

s.add_dependency              "activeresource", ">= 3.0"
Run Code Online (Sandbox Code Playgroud)

有没有办法指定可接受的版本列表?〜> 3.0或〜> 4.0?

ruby ruby-on-rails gemfile

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

如何使用外键定义activerecord和activeresource之间的关系?

我有一个使用activerecord的本地用户模型.用户有一个电子邮件字段.我还有一个名为tasks的activeresource模型,它有一个created_by字段,用于存储提交用户的电子邮件地址.我想将这两者联系起来,但我正在努力使用正确的语法,甚至是否可能.

ActiveResource的主要分支似乎甚至不支持外键.我找到了另一个分支,但仍然无法正常工作.

class User < ActiveRecord::Base
   has_many :tasks
end

class Task < ActiveResource::Base
  belongs_to :user
  schema do
    string 'created_by' #email
    # other fields
  end
end
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails foreign-keys activeresource foreign-key-relationship

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