Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Can';t使用Rails 4和引导sass gem在Heroku上运行CSS_Ruby On Rails_Heroku_Ruby On Rails 4_Bootstrap Sass - Fatal编程技术网

Ruby on rails Can';t使用Rails 4和引导sass gem在Heroku上运行CSS

Ruby on rails Can';t使用Rails 4和引导sass gem在Heroku上运行CSS,ruby-on-rails,heroku,ruby-on-rails-4,bootstrap-sass,Ruby On Rails,Heroku,Ruby On Rails 4,Bootstrap Sass,我在Heroku上部署了一个应用程序,但有一个问题我似乎无法解决。通过Bootstrap sass的应用程序的CSS没有加载,因此我有一个非样式的应用程序。目前,这只是一个静态页面的集合 除了自述文件中的一个步骤外,我已经完成了所有的步骤。我无法理解并且很可能成为我的问题的步骤如下。由于Rails中的一项更改阻止在供应商和lib中编译图像,因此您需要在application.rb中添加以下行: config.assets.precompile += %w(*.png *.jpg *.jpeg *

我在Heroku上部署了一个应用程序,但有一个问题我似乎无法解决。通过
Bootstrap sass
的应用程序的CSS没有加载,因此我有一个非样式的应用程序。目前,这只是一个静态页面的集合

除了自述文件中的一个步骤外,我已经完成了所有的步骤。我无法理解并且很可能成为我的问题的步骤如下。由于Rails中的一项更改阻止在供应商和lib中编译图像,因此您需要在application.rb中添加以下行:

config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif)
由于我对编程还是很陌生,第一个问题是我不知道在application.rb文件中的什么位置以及如何添加它。如果有人能帮我演示如何以及在何处正确添加上述代码,我将不胜感激

RAILS_ENV=production bundle exec rake assets:precompile
第二个问题可能与我正在使用的gem有关,但是当我创建应用程序时,sass-rails gem安装了~>4.0.0.beta1。根据自述文件,要使用的版本是3.2。由于这也可能是一个问题,我已经包括了gem文件,以防任何人确定这是我的问题的根本原因

提前感谢您提供的任何帮助

编辑:添加我在第一次尝试中采取的步骤,这些步骤导致样式在本地主机上正常工作,但在代码部署到heroku之后就无法正常工作

  • 创建了一个新的rails 4应用程序(下面是gem文件)
  • 添加了下面gem文件中列出的引导sass gem
  • 将PG gem添加到生产组中的my gem文件中,并将SQLite3移动到开发和测试中(运行bundle安装—无需生产,执行步骤2和3)
  • 为静态主页创建页面控制器
  • 在主页上的英雄单元中添加了一个h1,只是为了查看样式是否有效
  • 添加了styles.css.scss文件并包含@import“bootstrap”;到样式表
  • 创建git存储库,运行我的初始提交,并将代码推送到git
  • 创建heroku应用程序并将主应用程序推送到heroku
  • 在第二次尝试中,我在主页上添加了导航栏(如果这对任何人都有影响的话),并再次执行步骤7和步骤8,但在执行这些步骤之前,我运行了以下代码行

    RAILS_ENV=production bundle exec rake assets:precompile
    
    我最终还是得到了一个在本地主机上有适当风格的网站,但在Heroku上没有任何风格。正如我在上面的原始帖子中所提到的,有一行代码需要添加到application.rb文件中,但我没有遵循该行代码,因为我不了解如何正确地将该行代码添加到该文件中

    档案:

    source 'https://rubygems.org'
    
    ruby "2.0.0"
    
    # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
    gem 'rails', '4.0.0.beta1'
    
    group :production do
    gem 'pg'
    end
    
    group :development, :test do
    gem 'sqlite3'
    end
    
    # Gems used only for assets and not required
    # in production environments by default.
    group :assets do
    gem 'sass-rails',   '~> 4.0.0.beta1'
    gem 'coffee-rails', '~> 4.0.0.beta1'
    
    gem 'bootstrap-sass', '~> 2.3.1.1'
    
    # See https://github.com/sstephenson/execjs#readme for more supported runtimes
    # gem 'therubyracer', platforms: :ruby
    
    gem 'uglifier', '>= 1.0.3'
    end
    
    gem 'jquery-rails'
    
    # Turbolinks makes following links in your web application faster. Read more:  https://github.com/rails/turbolinks
    gem 'turbolinks'
    
    # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
    gem 'jbuilder', '~> 1.0.1'
    
    # To use ActiveModel has_secure_password
    # gem 'bcrypt-ruby', '~> 3.0.0'
    
    # Use unicorn as the app server
    # gem 'unicorn'
    
    # Deploy with Capistrano
    # gem 'capistrano', group: :development
    
    # To use debugger
    # gem 'debugger'
    

    通过将这两个gem添加到我的应用程序中,我能够解决这个问题

    group :production do
      gem 'rails_log_stdout',           github: 'heroku/rails_log_stdout'
      gem 'rails3_serve_static_assets', github: 'heroku/rails3_serve_static_assets'
    end
    
    添加该选项,运行
    bundle安装
    ,然后推送到heroku

    你的风格应该开始加载了。

    我刚刚(2013年6月13日)从Heroku devs那里得到了这个答案,他的支持引导我跨越了障碍。 这就是我在Heroku应用程序中从localhost获得css显示的方式

    “您所需要做的就是在生产中打开资产服务,并将记录器设置为stdout,以使Rails4在Heroku上工作。我们目前正在努力平滑Rails 4应用程序的部署过程,但与此同时,您只需更改代码中的这些行,就不需要这些gems。”(感谢Bret和Neil的好消息)

    在/config/environments/production中。设置:

    config.cache_classes = true
    config.serve_static_files = true
    config.assets.compile = true
    config.assets.digest = true
    
    我不知道记录器中的标准输出,所以无法检查

    做一个git添加。和git提交

    确保/config/database.yml具有:

    production:
      adapter: postgresql
      encoding: unicode
      database: Your_appname_production
    
    下面的env命令需要此信息

    确保gem文件中有正在生产的gem“pg” 执行另一个git提交

    在应用程序的终端中的一行上运行此命令:

    env RAILS_ENV=production DATABASE_URL=postgresql://user:pass@127.0.0.1/Your_app_name_production bundle exec rake assets:precompile 2>&1
    
    其中DATABASE_URL=postgresql与yml文件中的生产适配器相同 并且指定了您的应用程序名称,因为Heroku似乎只运行生产

    有人建议我不要这样做,我不需要:

    group :production do
      gem 'rails_log_stdout',           github: 'heroku/rails_log_stdout'
      gem 'rails3_serve_static_assets', github: 'heroku/rails3_serve_static_assets'
    end
    
    它在bundle安装和Heroku中出错

    不知道这是否有帮助,但我也增加了生产

    Bundler.require(*Rails.groups(assets: %w(development test production)))
    
    我记不起我在哪里看到那个建议了

    嗯 阿雷尔


    在config/envirnoments/production.rb中设置这些属性修复了我在apache server中遇到的类似问题

    只需在推送到heroku之前运行bundle exec rake assets:precompile

    ,我不会设置
    config.assets.compile=true
    ,这会影响性能(但确实有效)

    如下文所述:


    首先,从Rails beta版升级到

    检查您可能在何处设置
    config.assets.initialize\u on\u precompile=false
    ,因为这可能会使其返回到非链轮资产解析(我猜您可能在阅读heroku文档上的Rails 3.x时将其设置为false)

    将其设置回默认值
    true

    ruby
    config.assets.initialize\u on\u precompile=true
    

    然后在heroku上为应用程序启用:

    # Enable precompile support for the app
    heroku labs:enable user-env-compile
    # Remove precompiled assets
    rm -rf public/assets/
    git add -u 
    git commit -m 'Remove precompiled assets'
    # Now push and everything should just work from now on
    git push heroku master
    

    改编自文件
    /config/environments/production.rb
    中的.Set
    config.assets.compile=true

    config.assets.compile=true
    

    关于资产管道的更多信息。

    造成这个问题的一个简单原因可能是混合了css文件类型。根据我自己的经验,如果您推出一个同时包含.css和.scss文件类型的资产文件夹,就会发生这种情况。也许其他人可以解释为什么会发生这种情况……但是,我所做的只是将.css文件重命名为.scss。然后,一切都正确地编译了,世界上一切都是正确的。

    在推送到Heroku之前,您是否预编译了css?您到底做了什么还不清楚(除了“按照这些说明进行操作”),你能准确地写下你做了什么吗?@我在回答第一个问题的步骤中加了一句话,把
    config.assets.precompile
    一行接一行地写下另一行
    config.assets
    行(最好匹配缩进)。重要的是它在结尾之前。恐怕我没有
    config.assets.compile=true