【问题标题】:rails 3.2 LESS CSS and heroku?rails 3.2 LESS CSS 和 heroku?
【发布时间】:2012-01-24 20:41:53
【问题描述】:

想尝试一些新的东西,使用很棒的twitter bootstrap 和他们的Less CSS。我终于启动并运行了我的应用程序,但它在 heroku 的只读系统中崩溃了。 我试图找出我的选择,使用 LESS、rails 3.2 和 heroku。这是我认为可以做到的:

(1) 一种选择是:预编译。

 bundle exec rake assets:precompile
 git commit public/assets -m "tedious precompilation task"
 git push heroku

我肯定会忘记预编译一次,只需将更改推送到 heroku 并激怒我的用户。不是我想要的。

(2) 一个不错的选择是less.js。它编译客户端。这是最常用的吗?

(3) 更好的选择,IMO。预编译缓存。无论是预编译例程还是额外的客户端工作。我要问的是,有没有像 SASS 的麻烦这样的东西,花费更少?

12 年 1 月 26 日更新:人们不使用麻烦的 rails 3.1+,他们使用带有资产管道的 sass-rails(默认 rails 3.2)。麻烦是 sooo rails 3.0 ;) rake 预编译步骤在 heroku 失败。 /更新

我发现编译到静态机架缓存以由 varnish 提供服务的想法非常棒。我更喜欢它而不是让每个客户都需要自己编译我的 less css,因为它可以在部署时一次性完成。

1 月 25 日更新: 在 heroku 上更新自己。 cedar 堆栈支持资产管道,因此不再需要麻烦的 gem。正确的? /更新

怎么办?

【问题讨论】:

    标签: ruby-on-rails heroku asset-pipeline less


    【解决方案1】:

    解决方案:

    application.rb
      config.assets.initialize_on_precompile = false
    

    简单的解决方案,一旦你知道它......!

    gem less-rails 一起使用 现在所有资产都已编译并将被缓存(如选项 3 所示)。资产管道很棒!

    问题背景:

    Heroku 无法预编译,因为 rails pr 默认尝试初始化并附加到 DB,但 ENV 变量尚不可用。 没有你会得到

    $ git push heroku
    
    Preparing app for Rails asset pipeline
    Running: rake assets:precompile
    rake aborted!
    could not connect to server: Connection refused
    Is the server running on host "127.0.0.1" and accepting
    TCP/IP connections on port 5432?
    

    请注意:Heroku 也可以在预编译阶段提供环境变量。

    $ heroku plugins:install http://github.com/heroku/heroku-labs.git
    $ heroku labs:enable user_env_compile  [--app my_app]
    

    【讨论】:

    • 我认为您的答案的插件部分不再适用,我似乎无法通过该路线推动它。 Heroku 还警告每个命令“插件 heroku-labs 已被弃用”,我认为这可能是原因
    • @Crimbo 谢谢。你也许是对的。我自己不再使用这个了。也许有一种不同的方法来安装“heroku labs”,或者在早期阶段启用 env vars 的另一种方法。如果你发现了什么,请告诉我。
    【解决方案2】:

    你有宝石:

    gem 'less-rails'
    

    如果您将其添加到您的Gemfile,那么您可以像使用.scss.sass 一样使用您的.less 文件。

    编辑 但是如果你想使用 Bootstrap 那就更简单了:

    gem 'twitter-bootstrap-rails'
    

    然后

    rails g bootstrap:install
    

    更多信息GitHub repo

    【讨论】:

    • 我已经在使用这个 gem。你如何使用它部署到heroku?我是否缺少一些配置?
    • 以上是less-rails。我可以使用twitter-bootstrap-rails 安装预编译的引导 CSS (?) 并避免该问题。但目标是使用 Less 进行开发。你在 Heroku 上有任何使用 Less 的应用吗?
    • 是的,我在 Cedar 堆栈上。在推送之前我已经预编译了所有资产,这对我来说非常有用。您可以查看tori-app.herokuapp.com(抱歉,应用程序是波兰语,但设计和 CSS 代码与语言无关,但已缩小)。
    • 所以你正在做选项 1。预编译 -> 提交 -> 推送。
    • 手动预编译时,在git中需要它们。但我不同意这种方法,编译的资产不属于 git。自动化它!看我的回答。
    猜你喜欢
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多