【问题标题】:I'm using Sinatra and my assets (sass) are not working on heroku我正在使用 Sinatra,而我的资产(sass)没有在 heroku 上工作
【发布时间】:2014-01-28 04:13:33
【问题描述】:

我的资产在本地机器上的开发中运行良好。但是,当我部署到 Heroku 时,样式不起作用。我有以下目录结构。为了让我的资产在 Heroku 上运行,我需要做什么?

.
├── Gemfile
├── Gemfile.lock
├── codekit-config.json
├── config.ru
├── development.db
├── main.rb
├── public
│   ├── assets
│   │   ├── css
│   │   │   ├── styles.css
│   │   │   └── styles.scss
│   │   ├── images
│   │   │   ├── logo.png
│   │   │   └── sinatra.jpg
│   │   ├── js
│   │   └── sass
│   └── favicon.ico
├── song.rb
└── views
    ├── about.haml
    ├── contact.haml
    ├── edit_song.haml
    ├── home.haml
    ├── layout.haml
    ├── login.haml
    ├── nav.haml
    ├── new_song.haml
    ├── not_found.haml
    ├── show_song.haml
    ├── song_form.haml
    └── songs.haml

7 个目录,24 个文件

main.app

require 'sinatra/flash'
require 'sinatra'
require './song'
require 'sass'
require 'haml'
require 'sinatra/assetpack'

register Sinatra::AssetPack
# I dont' think I need the line below if I use codekit
# get('assets/css/styles.css') { scss :styles}

configure :development do
  DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/development.db")
end

configure :production do
  DataMapper.setup(:default, ENV['DATABASE_URL'])
end

assets do

  js :application, [
    '/js/jquery.js',
    '/js/app.js'
    # You can also do this: 'js/*.js'
  ]

  css :application, [
    '/assets/css/styles.css',
    '/assets/css/styles.scss',
   ]

  js_compression :jsmin
  css_compression :sass

end
configure do
  enable :sessions
  set :username, 'frank'
  set :password, 'sinatra'
end

helpers do
  def set_title
    @title ||= "Songs By Russell"
  end


end

before do
  set_title
end

get '/login' do
  haml :login
end

post '/login' do
  if params[:username] == settings.username && params[:password] == settings.password
    session[:admin] = true
    redirect to('/songs')
  else
    haml :login
  end
end

get '/logout' do
  session.clear
  redirect to('/login')
end

get '/set/:name' do
  session[:name] = params[:name]
end

get '/' do
  haml :home
end

get '/about' do
  @title = "All About This Website"
  haml :about
end

get '/contact' do
  haml :contact
end

post '/contact' do
  send_message
  flash[:notice] = "Thank you for your message. We'll be in touch soon."
end

not_found do
  haml :not_found
end

config.ru

require './main'
run Sinatra::Application

【问题讨论】:

    标签: heroku sass sinatra


    【解决方案1】:

    You can't write to the filesystem with Heroku。预编译资产(通过sinatra-assetpack 或其他方式)并将它们签入然后推送,或者使用您自己的sass route

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2011-12-10
    • 2013-10-08
    相关资源
    最近更新 更多