小编Joh*_*ohn的帖子

在Rails引擎中使用另一个gem的javascript

我正在尝试创建一个rails引擎,它将使用我添加到引擎的gem依赖项中的javascript.但是当我在我的application.js中为我的引擎添加以下行时,我一直得到"找不到文件'fullcalendar'":

//= require fullcalendar
Run Code Online (Sandbox Code Playgroud)

这一行正在将javascript从gem依赖项加载到rails引擎中.

当gem安装在普通的rails应用程序(不是引擎)上时,这条线也可以工作.我在这里错过了什么?引擎可以从另一个引擎/ gem加载javascript吗?

更新: 研究我自己的问题可能是链轮只在引擎内查找javascript.gem依赖项安装在父应用程序的供应商/缓存中而不是引擎因此//要求fullcalendar失败,因为它在引擎内查找并且fullcalendar的javascript在父应用程序中.

令我困惑的是,如果我明确地在父应用程序gemfile中包含fullcalendar,那么我可以在引擎中访问它.这对我来说没有意义.在这两种情况下,完整的日历宝石javascript都在父应用程序中,但行为是不同的.在两个地方包括宝石对我来说是不合适的,似乎不是一个合适的解决方案.有什么想法吗?

ruby-on-rails rails-engines ruby-on-rails-3 asset-pipeline ruby-on-rails-3.2

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

模型的日期时间字段与本地主机在 heroku 上的存储方式不同

脚步:

在我的本地主机服务器上,我在位于太平洋时区的浏览器中选择时间 2013 年 1 月 18 日上午 10 点 - 上午 11 点。然后我在 heroku 上的生产服务器上选择完全相同的时间。

如您所见,保存到数据库的内容的输出是不同的。我希望生产作为本地主机运行,并在将时间存储为 UTC 时考虑时区。这是什么原因造成的?heroku 服务器在 EST 中,但这并没有考虑到这种行为。

控制器:

  def create
    puts params[:event][:starts_at]
    @event = Event.create!(params[:event])
    puts @event.starts_at
  end
Run Code Online (Sandbox Code Playgroud)

输出本地主机:

2013 年 1 月 18 日星期五 10:00:00 GMT-0800(太平洋标准时间)

2013-01-18 18:00:00 UTC

输出 Heroku(生产):

2013 年 1 月 18 日星期五 10:00:00 GMT-0800(太平洋标准时间)

2013-01-18 10:00:00 UTC

架构:

 t.datetime "starts_at"
Run Code Online (Sandbox Code Playgroud)

环境:

Ruby on Rails 3.2.11

红宝石 1.9.3

Postgres

postgresql timezone ruby-on-rails heroku ruby-on-rails-3.2

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

CoffeeScript重构共享变量

我是CoffeeScript的新手,并试图理解如何重构这个例子.既然两个函数共享画布和上下文,有没有办法将它们拉出函数并共享它们而不是重复自己?我确信这是显而易见的,我很遗憾,但我无法让它发挥作用.

CoffeeScript文件

@draw_rectangle = ->
  canvas = document.getElementById("main_canvas")
  context = canvas.getContext("2d")
  context.fillRect(50, 25, 150, 100)

@draw_square = ->
  canvas = document.getElementById("main_canvas")
  context = canvas.getContext("2d")
  context.fillRect(100, 50, 100, 50)
Run Code Online (Sandbox Code Playgroud)

HTML正文:

<body>
  <canvas id="main_canvas"></canvas>
  <p><a onclick="draw_square()" href="#">Draw Square</a></p>
  <p><a onclick="draw_rectangle()" href="#">Draw Rectangle</a></p>
</body>
Run Code Online (Sandbox Code Playgroud)

javascript coffeescript

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

检查用户是否阻止第三方域

我遇到了一个问题,我们的许多支持电话是关于我们的图片没有加载,因为用户阻止亚马逊s3或类似的第三方服务.我使用第三方服务来托管图片,视频和一些JavaScript.有没有办法通过javascript检测客户端是否阻止域,以便我们显示消息而不是让用户联系支持?

$.ajax 'http://aws.amazon.com/s3/',
  type: 'GET',
  dataType: 'html'
  complete: (e, xhr, settings) ->
    if e.status == 200
      console.log "Not Blocking S3"
    else
      console.log "Blocking S3"
Run Code Online (Sandbox Code Playgroud)

根据评论,我尝试了它,但它仍然无法正常工作.当我没有块时它返回阻塞.

上面的示例coffeescript代码不起作用,因为我认为发生了安全性错误,因为它在不同的域上执行ajax.Firebug以红色显示请求,但是说200. e.status返回0.

javascript jquery client-side blocking coffeescript

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

Ruby 1.9 Base64编码写入文件错误

我收到以下错误:

Encoding::UndefinedConversionError: "\x81" from ASCII-8BIT to UTF-8
Run Code Online (Sandbox Code Playgroud)

以下都在Ruby 1.8.7中工作,所以我认为这与Ruby 1.9如何处理编码有关,但我不太确定如何解决它.我目前正在使用Ruby 1.9.3.

  decode_base64_content = Base64.decode64(content) 

  File.open("index.txt", "w") do |f|
    f.write(decode_base64_content)
  end
Run Code Online (Sandbox Code Playgroud)

内容如下:

CgcZAAEAAABQcmVzZW50YXRpb24RMQAGSUIyQjdCNjBCLUZBRTMtMjVGMS1DQ0E1LTM1REM4NjBC
MDlCRgYCBklBMjk2OTQ4MC0yMkQyLURENzMtQUY5Ni1DNURDMDIyQTVFRjkGBAZJNUJCRTI3REYt
Q0QyRC03NkY0LTk1MUMtQzYxRkYxQjgxN0Y4BgYGSTg0QjM3M0FGLTVFNjEtMkMwMy1DMTBCLUNB
MUZCMDY0Q0NERQYIBkkwOTIwNDRBRC02QTQ5LTg0NzEtMzc5QS0yRjQxMzU2MUY0OUQGCgZJODlC
NDczOTUtOTk1MS01OTk1LTk4NDctNkU1NjI4RjhGNjYzBgwGSThCQ0RFM0VDLUMyREItMDkyNy1G
NTFFLTJGNDE4OEMzNURDMwYOBklGMDk5QkRDOC1GOEFDLTg1QjEtMjgzMC0yRjQ5RkZFMDFCNUEG
EAZJNTJCOEQ3RUItMzZEQi1CMjNELUU2MTYtMkY0QjUxNDIwMjBFBhIGSUM2RjkzNjgwLTFBNjMt
NzU5Qi0yOEE5LTUwMDc2NjZCOEYyNgYUBkk2MDIwRjg4Ni1BQTk4LTRBNDQtQjZGNS1DNDAyMTMz
NzEzOEQGFgZJRDFEMjcxMzYtQTkwQy0xRDBBLTc4RjAtQ0ExRUFCQzgzRUE1BhgGSUZBRDQzMjI1
LTUwODctNENEMy1ENjkzLUQ4Qzg0NDc3RTMyRAYaBklFMjc5NjA5Mi0xNUYzLUY4NkItMEFBQi0x
MUEzQjIwNEFBRTIGHAZJNERFNEYzNUItQzAyNy1DOTQ1LTY2MzUtMDE4NTZDRTdBMDM3Bh4GSUM4
NjA4RkI4LUI4RDEtMjM5RS04ODY4LUNBMjIzNUUwNjk5MAYgBkk4QjcxOEFDRi03NEE0LTA4REQt
QzZENC1DQTEyNDQwRTkzOUYGIgZJQjA3NTk0OEMtQzA3MS0wQTQ3LTYxNDQtNEU1OUIwN0QwQ0VF
BiQGSUM2M0VFQkU1LUZFOEEtRUVDMC1GNDFFLTc3QTI3Qzg2RDE1OAYmBkk5QkQ2M0NEQi02NDg2
LTM2OUQtMTY0NS0xMDIzMTQ5Njk1OUQGKAZJOTI3NDUzNDEtRUYzRC04MEU1LUZDQkUtQ0EyMTZG
Q0FGRTcyBioGSUI3MzlFMTBFLTk2M0QtMDA0Ny1EMkU1LUNBMjA2ODM2MjZFNgYsBkk4RUY5QkZB
Ni0wNDAyLTQwQUQtRjAxQi0xMTRBNDBFODMwRjMGLgZJQjY2N0YxODktNzQ4My05RkE4LTYwMDkt
Run Code Online (Sandbox Code Playgroud)

持续约3000行.

如何解决此转换错误?上面的代码段工作但在3000行的某处,我认为base64解码方法使用无效编码.谢谢!

ruby base64 ruby-on-rails character-encoding ruby-1.9

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

将字体添加到资产管道

我已经阅读了几个关于这个问题的stackoverflow问题,但似乎没有一个对我有用.我的环境是Rails 3.1.6,Ruby 1.9.3,sass-rails 3.1.0.

我正在尝试将字体添加到供应商/资产/字体.当我将字体文件(例如:1eaf27c0-f4de-4273-9f4c-1b3236ad2f3c.woff)添加到该目录并重新启动服务器时.如果我去localhost:3000/assets/1eaf27c0-f4de-4273-9f4c-1b3236ad2f3c.woff,我得到404.

任何想法为什么会这样?我试过添加

config.assets.paths <<"#{Rails.root}/vendor/assets/fonts"

到application.rb与它仍然无法正常工作.

fonts ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 asset-pipeline

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

茉莉花间谍未定义

当我运行我的茉莉花规格时,我收到以下错误:

Error: Expected a spy, but got undefined.
Run Code Online (Sandbox Code Playgroud)

我的coffeescript代码:

  describe "setupForm", ->
    beforeEach ->
      spyOn(Subscription.prototype, 'runSimulation')

    it "calls subscription.runSimulation when form is submitted with number", ->
      Subscription.prototype.runSimulation()
      expect(Subscription.prototype.runSimulation()).toHaveBeenCalled()
Run Code Online (Sandbox Code Playgroud)

我已经将我的错误代码简化为上面的调试,但是我无法弄清楚为什么当我明确地将它称为我的测试时它是从未调用过的.我正在其他地方测试该方法,所以我认为错误必须与我如何使用Jasmine Spy有关.谢谢.

javascript coffeescript jasmine jasmine-jquery

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

heroku&devise用户注册注册控制器错误

我刚刚切换到Devise/Omniauth组合,一切都在我的localhost服务器上正常工作.但是,当我上传到heroku时,当用户点击传统注册表单上的注册(而不是omniauth登录)时,应用程序崩溃.我正在使用rails 3.我的日志说

LoadError(没有这样的文件加载--bcrypt):app/controllers/registrations_controller.rb:11在'build_resource'app/controllers/registrations_controller.rb:4 in create'

引用的控制器:

class RegistrationsController < Devise::RegistrationsController

  def create
    super
    session[:omniauth] = nil unless @user.new_record?
  end

  private

  def build_resource(*args)
    super
    if session[:omniauth]
      @user.apply_omniauth(session[:omniauth])
      @user.valid?
    end
  end 
end
Run Code Online (Sandbox Code Playgroud)

由于注册控制器超越了Devise,因此第4行和第11行是超级的.出了什么问题?谢谢.

ruby-on-rails heroku super railscasts devise

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

Errno :: ETIMEDOUT:连接超时 - 连接(2)

在生产中,我偶尔会收到以下错误:

Errno::ETIMEDOUT: Connection timed out - connect(2)
Run Code Online (Sandbox Code Playgroud)

当我使用包含由paperclip/aws-sdk上传到s3的图像的prawn gem生成PDF时,似乎只会发生这种情况.这可能每周只发生几次,每天使用数百次(没有问题),但是当它失败时会导致500错误.

跟踪是:

/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/net/http.rb:560:in
`initialize'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/net/http.rb:560:in
`open'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/net/http.rb:560:in
`connect'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/timeout.rb:53:in
`timeout'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/timeout.rb:101:in
`timeout'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/net/http.rb:560:in
`connect'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/net/http.rb:553:in
`do_start'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/net/http.rb:542:in
`start'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:242:in
`open_http'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:616:in
`buffer_open'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:164:in
`open_loop'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:162:in
`catch'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:162:in
`open_loop'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:132:in
`open_uri'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:518:in
`open'
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/1.8/open-uri.rb:30:in
`open'
....rb:57:in `render_image_to_pdf'
Run Code Online (Sandbox Code Playgroud)

第57行:

pdf.image open(image.expiring_url(30.minutes, :full)), :width => 300, :position => 20
Run Code Online (Sandbox Code Playgroud)

建立:

Rails 3.0.10
Ruby 1.8.7EE
Prawn  0.11.1
AWS-SDK 1.3.3
Paperclip 2.5.2
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能防止此错误?

ruby-on-rails prawn amazon-s3 paperclip ruby-on-rails-3

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