2011-09-18 16 views
18

Sto seguendo il manuale di sviluppo Web Agile con Rails 4a edizione e ho un problema con sprocket css in rails 3.1.Pignoni :: CircularDependencyError nell'archivio # Store

Il CSS codice è:

http://media.pragprog.com/titles/rails4/code/rails31/depot_e/app/assets/stylesheets/application.css.scss

Se modifico il codice css di app/beni/fogli di stile/aplication.css.scss prendo l'errore successivo:

Sprockets::CircularDependencyError in Store#index 

Showing /home/ubuntu/Desktop/Depot/app/views/layouts/application.html.erb where line #5 raised: 

/home/ubuntu/Desktop/Depot/app/assets/stylesheets/application.css.scss has already been required 
Extracted source (around line #5): 

2: <html> 
3: <head> 
4: <title>Pragprog Books Online Store</title> 
5: <%= stylesheet_link_tag "application" %> 
6: <%= javascript_include_tag "application" %> 
7: <%= csrf_meta_tag %> 
8: </head> 
Rails.root: /home/ubuntu/Desktop/Depot 

Application Trace | Framework Trace | Full Trace 
app/views/layouts/application.html.erb:5:in`_app_views_layouts_application_html_erb___1008723970_81658620' 

Non capisco perché se modifico un valore di margine o un valore di riempimento in aplication.css.scss ad esempio ottengo questo errore.

Grazie mille.

+0

Si spegne quando si riavvia il server? –

+0

Not. Ho riavviato il server ma il problema non è stato risolto. Se desattivo il css la pagina funziona ma senza css. Ho rimosso da aplication.html.erb l'applicazione <% = stylesheet_link_tag "%>. Quindi la pagina funziona bene ma senza css. Non so che posso fare per risolvere questo problema :(. Grazie mille – hyperrjas

+0

Per favore metti un esempio riproducibile –

risposta

52

È necessario rimuovere app/assets/stylesheets/application.css.

+0

Questo problema risolse il mio Grazie. –

+1

questo è chiamato quick fix;) –

+0

Sì, 'require_tree .' significa" richiede tutto in questa directory e tutti i bambini "e si trova nel file' application.css' generato. È piuttosto strano che di default Rails dica "includi tutti i CSS in tutte le pagine sempre", eh? – AlexChaffee

2

Stavo avendo lo stesso problema dopo aver installato SCSS. Ho risolto il problema rimuovendo i commenti di defunta che posiziona i rails nell'intestazione. Quindi questo:

/* 
* This is a manifest file that'll be compiled into application.css, which will include all the files 
* listed below. 
* 
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, 
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path. 
* 
* You're free to add application-wide styles to this file and they'll appear at the top of the 
* compiled file, but it's generally better to create a new file per style scope. 
* 
*= require_self 
*= require_tree . 
*/ 

#wrapper { 
    width: 980px; 
    margin: 0 auto; 
} 

E'questo:

#wrapper { 
    width: 980px; 
    margin: 0 auto; 
} 
+1

Questi "commenti predefiniti" sono chiamati "direttive" e senza di essi, dovrai includere e precompilare esplicitamente i tuoi file CSS asset. Quale potrebbe essere OK per te, ma non è Rails standard in questi giorni. – AlexChaffee

+0

corretto. Questo era un paio di anni fa stavo avendo questo problema. Non sono più e tutto funziona come previsto. Sono abbastanza sicuro che il mio problema era qualcosa che stavo facendo male in quel momento. – Ken

14

Ho avuto un problema simile:
Asset pipeline not precompiling sass

La dipendenza circolare si verifica quando il file manifesto richiede i file di alberi. Sass lo fa comunque, quindi non è necessario.

Togliere:

*= require_tree . 
+3

Perché diavolo non è documentato come tale. Venendo da .NET questo è molto confuso. Devo google per praticamente tutto. :/ –

+0

La pipeline di asset è piuttosto nuova e confusa per molte persone. Sarà più facile :) – Rimian

+0

Greate yar, Mi hai salvato un sacco di tempo. –

0

solo il nome del application.css come "application.scss". Questo risolverà il tuo problema.