Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is More (Less CSS plugin for Rails) still recommended?

The Less gem has been superseded by less.js, which runs on the server with Node.js. More, the "official" Less plugin for Rails, hasn't been updated since June 14, 2010.

In light of all that, what is the recommended way to use Less with Rails these days? I suppose I could always just use client-side JS for this, which everyone seems to be embracing. But I'm not crazy about relying on client-side JS just to transform a stylesheet, especially considering that I'd like to degrade gracefully. I realize that Less.js is considered very fast, but as a matter of principle, I don't want my CSS to be utterly dependent on the browser's JS engine.

Assuming I want to compile Less server-side, what is the best practice these days for use with Rails? I know you can run Less using Node.js, but I'm looking for nice Rails integration such as we once had with More.

I'm looking for something that will work on Linux and Mac. Ideally, it would be a gem or a Rails plugin, not a standalone app.

Update: I'm looking into whether The Ruby Racer can be used to embed Less.js into a Rails app. Does anyone have opinions on that?

Update 2: This question is really old, but for anyone who's still interested, I just wanted to point out that Rails 3 comes with SCSS integration out of the box. SCSS is a LESS competitor, and I'm quite happy with it.

like image 342
rlkw1024 Avatar asked Mar 08 '11 00:03

rlkw1024


3 Answers

Try out less.app for Mac OSX. http://incident57.com/less/

Use it on your local dev to generate the CSS.

My only complaint is that the parsing sometimes gets tripped up on IE specific CSS rules that are invalid CSS but were handled fine by the more gem.

Also it doesn't handle the less partials (_file.less) that more does.

like image 182
nutcracker Avatar answered Nov 16 '22 17:11

nutcracker


Bryan here, developer of Less.app

You can handle ANY IE-specific code in Less just by using the escape function, which takes a string. Thus, you could write: e("filter:alpha..."); in your LESS file and it will compile to the expected IE-specific (though non-standard) CSS.

See Lesscss.org for more info. The bit about the e() function is all the way at the bottom of the docs.

like image 3
Bryan Avatar answered Nov 16 '22 18:11

Bryan


May be not helpful at all, but the approach we currently use (PHP/node dev) is client-side .less during development, and delivering compiled .css on deploy, using lessc. That can be integrated into build scripts or commit hooks, no bundled magic :)

like image 2
Ricardo Tomasi Avatar answered Nov 16 '22 18:11

Ricardo Tomasi