Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

Bob Morales posted:

Ruby 1.8.7 (2009-12-24 patchlevel 248) Ruby Enterprise Edition 2010.01
Passenger 3.0.7

I am looking at setting up memprof right now, I'm just not sure what could I should be checking (or what the easiest way to check all of it is)

https://github.com/ice799/memprof seems to make it look like you want the Rack Middleware doing the dirty work, but you might want its output to go somewhere other than your production log.

At some point though, the time you spend on optimizing memory will cost more than a better deployment strategy (more smaller app servers). For me, it's always been cheaper to throw hardware (read: VPSes) at scaling once you get the app to not crash.

Also, you should at least update Rails; 3.0.8 and 3.0.9 fix some security and SafeBuffer issues. If your test suite is good, you shouldn't worry about minor versions.

Adbot
ADBOT LOVES YOU

Bob Morales
Aug 18, 2006


Just wear the fucking mask, Bob

I don't care how many people I probably infected with COVID-19 while refusing to wear a mask, my comfort is far more important than the health and safety of everyone around me!

BonzoESC posted:

https://github.com/ice799/memprof seems to make it look like you want the Rack Middleware doing the dirty work, but you might want its output to go somewhere other than your production log.

At some point though, the time you spend on optimizing memory will cost more than a better deployment strategy (more smaller app servers). For me, it's always been cheaper to throw hardware (read: VPSes) at scaling once you get the app to not crash.

Also, you should at least update Rails; 3.0.8 and 3.0.9 fix some security and SafeBuffer issues. If your test suite is good, you shouldn't worry about minor versions.

My boss was spergin' out on me earlier for spending time working on this. Then he showed me stuff in New Relic for 2 hours "This is where you will find the problem", after I kept asking him how it was going to tell us what was making the processes grow and grow, the longer they ran. It doesn't have anything to do with how long a page loads or how long a SQL query takes!

He also said if we throw hardware at it now, we'll just have to throw hardware at it in the future. There's no interest in adding additional web servers and a load balancer.

Test suite? ahahaah

We moved the offending app to 3.0.9 so we'll see what happens today.

NotShadowStar
Sep 20, 2000

Bob Morales posted:


He also said if we throw hardware at it now, we'll just have to throw hardware at it in the future. There's no interest in adding additional web servers and a load balancer.


Ya know how Rails still has this dumb myth on IT DOESNT SCALE ENTERPRISE CUMGURGLE

This right here. Doesn't matter if its Rails or Django or Drupal or loving Wordpress, if you're hitting the limits of your server then load balance that poo poo jesus loving christ.

asveepay
Jul 7, 2005
internobody
At Windy City Rails last weekend, Nic Williams did a decent talk about using threaded concurrency to wring performance out of your app without having to run a zillion Ruby processes that all utilize 150-200MB of Ram.

Instead he espoused the use of an evented web server with a low memory footprint (nginx) and a threadsafe web server (trinidad) along with a threadsafe implementation of rails (Ruby 1.9.2 & Rails 3 with config.threadsafe set to true). He also had a couple interesting slides about memory performance between nginx and apache.

Of course, trinidad requires Jruby, JDBC gems setup and a host of other changes. I spent the rest of the weekend playing around with it, but didn't get too far since my nginx skills are quite terrible, and work sprang up to occupy my attention.

Anyhow, the talks should be up soon and that one was one of the more interesting ones from Saturday.

maskenfreiheit
Dec 30, 2004
.

maskenfreiheit fucked around with this message at 21:32 on Apr 28, 2019

NotShadowStar
Sep 20, 2000

GregNorc posted:

Is there a simple way I could just iterate over the data in a given column in a for loop?

Nobody uses for loops in Ruby. Think iterators always.

What you want is the CSV library, included in 1.9 and external in 1.8 as the 'FasterCSV' library.

With it, you do this:

code:
CSV.foreach "path_to_file" do |row|
  #row is either an index array-like or hash-like object, depending if the CSV file had headers. read or manipulate rows here
end
Now the problem with the CSV library, though, is that it's very strict and will throw exceptions on any errors and you can't change its behavior. This is generally a good thing, but you have to play around with it.

http://ruby-doc.org/stdlib/libdoc/csv/rdoc/index.html

Grawl
Aug 28, 2008

Do the D.A.N.C.E
1234, fight!
Stick to the B.E.A.T
Get ready to ignite
You were such a P.Y.T
Catching all the lights
Just easy as A.B.C
That's how we make it right
I want to set up an easy database with login/logout (Hobo for that I guess) features. People should be able to log in, add stuff to the database and that's pretty much that. Regular visitors can browse through these entries.

Since it's been ages since I used Visual Basic (yes) and Java, and I don't have any interest in learning PHP/SQL for this simple project, I decided Ruby would be best for what I want.

However, is there some kind of good resource (free if possible) for web developers on how to get starting in Ruby and setting up a half-decent website? I own all the resources to get it running, I just need to know how.

NotShadowStar
Sep 20, 2000
I say ignore Rails for now, since it's like expert mode web development and Ruby usage. Rails design assumes you know a lot about web development and a fair bit about the language already.

For a head start on the language the old Pickaxe book is a decent start. From there I'd suggest looking at the Sinatra framework. I suggest this because you're working closer to how the Ruby language actually works, you gain an understanding on how Ruby DSLs function and see how the different components of Ruby web development work like where Rack fits in and why it is awesome, the different templating and database layers, and so forth. Rails rather abstracts all of this away, and Rails also does a lot of crazy poo poo with the Ruby language that you just don't see anywhere else.

Lots of people try to dive right into Rails and get really, really lost, angrypost about it on a blog or something and gives Rails and the Ruby language a bad rap from people who have no idea what they are doing. Please don't be that person.

Nybble
Jun 28, 2008

praise chuck, raise heck
Hobo should be able to do everything that you one. It's very simplistic, but it would allow you to update entries and allow people to see the data, and could probably even be set up within 10 minutes.

I would recommend these three places to start learning rails though:
http://ruby.railstutorial.org/ruby-on-rails-tutorial-book
http://guides.rubyonrails.org/
http://railscasts.com/

Bob Morales
Aug 18, 2006


Just wear the fucking mask, Bob

I don't care how many people I probably infected with COVID-19 while refusing to wear a mask, my comfort is far more important than the health and safety of everyone around me!

What are some good blogs/articles about setting up multiple front-end web servers with a load balancer (an all free-software Linux solution is preferred)?

Right now we have a single web server running Apache/Passenger and a MySQL database server. We'd like to have 2+ web servers due to traffic, and for redundancy. Our database is 20GB and grows about a gig a month, but a lot of that data is 2+ years old and not used anymore.

My boss was playing with the sliders on the Rackspace Cloud configuration page and basically said "We can get 4 8GB cloud servers for what we pay for our 1 server now..." but I tried to explain to him it's not quite that simple.

Pardot
Jul 25, 2001




Bob Morales posted:

My boss was playing with the sliders on the Rackspace Cloud configuration page and basically said "We can get 4 8GB cloud servers for what we pay for our 1 server now..." but I tried to explain to him it's not quite that simple.

You should also factor in the cost of your salary * how many hours loving around doing ops instead of building features.

kalleth
Jan 28, 2006

C'mon, just give it a shot
Fun Shoe

Bob Morales posted:

What are some good blogs/articles about setting up multiple front-end web servers with a load balancer (an all free-software Linux solution is preferred)?

Right now we have a single web server running Apache/Passenger and a MySQL database server. We'd like to have 2+ web servers due to traffic, and for redundancy. Our database is 20GB and grows about a gig a month, but a lot of that data is 2+ years old and not used anymore.

My boss was playing with the sliders on the Rackspace Cloud configuration page and basically said "We can get 4 8GB cloud servers for what we pay for our 1 server now..." but I tried to explain to him it's not quite that simple.

First thing I'd do is some kind of data retention policy to prune old, unused data. You can't just have a database grow all the time without some kind of attempt to clean it. Apart from the obvious storage concerns, old data is useless data that pollutes your data stores usefulness.

My personal thoughts are if you want to go the balancer route properly, i'd look at some other rack servers; thin/rainbows/mongrel - instead of passenger.

That way you can split it out - a frontend web server running apache/nginx which is the 'entry point' to your users - feeding out over an internal network to several different balancers using mod_proxy. These balancers can connect to your database server individually.

Blogs, not too sure, but that's the approach I use; when using nginx or apache as a simple pass-through for the balancers and a dedicated database box, you're not going to hit capacity on either of those before you have a rack full of balancer servers.

Bob Morales
Aug 18, 2006


Just wear the fucking mask, Bob

I don't care how many people I probably infected with COVID-19 while refusing to wear a mask, my comfort is far more important than the health and safety of everyone around me!

How do you keep the web servers synchronized? Capistrano can push to more than one server but we have user data (images etc) that aren't in there. I take it we would need to implement some sort of shared storage between hosts?

NotShadowStar
Sep 20, 2000
Most people use a CDN for static assets, which on setup will redirect requests from your servers to their network, and if the CDN doesn't have that asset then it'll fetch it from your server first. They're pretty painless to set up.

For setting up identical servers Capistrano was used a lot for Rails application deployments, but there's now things like Chef or Puppet to help set up an identical servers from a blank OS installation to rolling out the app.

Or just use Heroku.

kalleth
Jan 28, 2006

C'mon, just give it a shot
Fun Shoe

Bob Morales posted:

How do you keep the web servers synchronized? Capistrano can push to more than one server but we have user data (images etc) that aren't in there. I take it we would need to implement some sort of shared storage between hosts?

Depending on your level of traffic, your frontend apache / nginx server can 'act' as a CDN for static assets - i.e. images/etc.

Your mod_rewrite rule that redirects requests to the balancers is normally only set up to forward to the balancers if the request path doesn't exist relative to the document root.

Or use Chef. Or Puppet.

Or just use heroku.

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug
Anybody else going to RubyConf this week/weekend?

NotShadowStar posted:

Or just use Heroku.

dexter
Jun 24, 2003
Do any of you guys use Unicorn and it's "downtime-less restarts" with nginx? I'm using Github's configuration but get 502s during Unicorn restarts. The actions that are being called are very light on DB reads (maybe three queries for a total of 20 rows returned) but somehow as soon as Unicorn gets that USR2 it starts barfing.

preload_app is true.

code:
# unicorn_rails -c /usr/local/appname/shared/config/unicorn.rb -E production -D

rack_env = ENV['RACK_ENV'] || 'production'

# 4 workers and 1 master since we're running on a VM that only has two cores
worker_processes (rack_env == 'production' ? 4 : 2)
working_directory '/usr/local/appname/current'

# Load rails+app into the master before forking workers
# for super-fast worker spawn times
preload_app true

# Restart any workers that haven't responded in 15 since [appname] should be pretty drat fast and if a worker hasn't
# done anything in 15 seconds then something went terribly wrong.
timeout 15

# Listen on a Unix data socket
listen '/tmp/unicorn.sock', :backlog => 2048
pid '/tmp/pids/unicorn.pid'

before_fork do |server, worker|
  ##
  # When sent a USR2, Unicorn will suffix its pidfile with .oldbin and
  # immediately start loading up a new version of itself (loaded with a new
  # version of our app). When this new Unicorn is completely loaded
  # it will begin spawning workers. The first worker spawned will check to
  # see if an .oldbin pidfile exists. If so, this means we've just booted up
  # a new Unicorn and need to tell the old one that it can now die. To do so
  # we send it a QUIT.
  #
  # Using this method we get 0 downtime deploys.

  old_pid = '/tmp/pids/unicorn.pid.oldbin'
  if File.exists?(old_pid) && server.pid != old_pid
    begin
      Process.kill("QUIT", File.read(old_pid).to_i)
    rescue Errno::ENOENT, Errno::ESRCH
      # someone else did our job for us
    end
  end
end


after_fork do |server, worker|
  ##
  # Unicorn master loads the app then forks off workers - because of the way
  # Unix forking works, we need to make sure we aren't using any of the parent's
  # sockets, e.g. db connection
 
  ActiveRecord::Base::establish_connection(YAML.load_file('config/database.yml')[ENV['RACK_ENV']])

  ##
  # Unicorn master is started as root, which is fine, but let's
  # drop the workers

  begin
    uid, gid = Process.euid, Process.egid
    user, group = 'appname', 'webdeploy'
    target_uid = Etc.getpwnam(user).uid
    target_gid = Etc.getgrnam(group).gid
    worker.tmp.chown(target_uid, target_gid)
    if uid != target_uid || gid != target_gid
      Process.initgroups(user, target_gid)
      Process::GID.change_privilege(target_gid)
      Process::UID.change_privilege(target_uid)
    end
  rescue => e
    if RAILS_ENV == 'development'
      STDERR.puts "couldn't change user, oh well"
    else
      raise e
    end
  end
end

dexter fucked around with this message at 04:12 on Sep 29, 2011

A MIRACLE
Sep 17, 2007

All right. It's Saturday night; I have no date, a two-liter bottle of Shasta and my all-Rush mix-tape... Let's rock.

I'm having some trouble getting DateTime.strptime() to work properly. Getting "Argument Error (invalid date)"

code:
  def self.search(starts, ends)
    puts start #=> 9/27/2011 for example
    if starts && ends
      where( 'starts_at > ? AND ends_at < ?',
             DateTime.strptime('#{starts}', '%m/%d/%Y'), 
             DateTime.strptime('#{ends}', '%m/%d/%Y') )
    else
      after_today
    end
  end
Frustrating because it seems like it should be working!

skidooer
Aug 6, 2001

A MIRACLE posted:

code:
DateTime.strptime('#{starts}', '%m/%d/%Y')
DateTime.strptime('#{ends}', '%m/%d/%Y')

In Ruby, single quoted strings are not parsed for interpolated variables. Not sure how necessary your conversion to string is, but keeping with the intent of your code:

code:
DateTime.strptime(starts.to_s, '%m/%d/%Y')
DateTime.strptime(ends.to_s, '%m/%d/%Y')

A MIRACLE
Sep 17, 2007

All right. It's Saturday night; I have no date, a two-liter bottle of Shasta and my all-Rush mix-tape... Let's rock.

skidooer posted:

In Ruby, single quoted strings are not parsed for interpolated variables. Not sure how necessary your conversion to string is, but keeping with the intent of your code:

code:
DateTime.strptime(starts.to_s, '%m/%d/%Y')
DateTime.strptime(ends.to_s, '%m/%d/%Y')

Thanks for the quick reply! I still have a lot to learn about this language.

NotShadowStar
Sep 20, 2000
Here's me going on another tirade on you should learn the language first.

Does C# have this problem, people diving right into ASP.NET MVC without knowing a lick of C#?

hmm yes
Dec 2, 2000
College Slice
But but but creating a blog in 15 minutes :wth:

A MIRACLE
Sep 17, 2007

All right. It's Saturday night; I have no date, a two-liter bottle of Shasta and my all-Rush mix-tape... Let's rock.

NotShadowStar posted:

Here's me going on another tirade on you should learn the language first.

Does C# have this problem, people diving right into ASP.NET MVC without knowing a lick of C#?

Don't freak out, I'm very committed to learning Ruby standalone.

Lamont Cranston
Sep 1, 2006

how do i shot foam
Does anyone know how I can include associated objects in a query according to a scope? I have Companies with many Jobs, but Jobs expire after a certain amount of time, so when I do Company.includes(:jobs) I want to be able to limit what it includes to just active jobs. Is there any way to do this? I already have an 'active' scope on Jobs, and I was hoping I would be able to reuse that, but I'll take anything.

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

Lamont Cranston posted:

Does anyone know how I can include associated objects in a query according to a scope? I have Companies with many Jobs, but Jobs expire after a certain amount of time, so when I do Company.includes(:jobs) I want to be able to limit what it includes to just active jobs. Is there any way to do this? I already have an 'active' scope on Jobs, and I was hoping I would be able to reuse that, but I'll take anything.

It doesn't look like you can reuse the scope, but the query interface documentation says:

quote:

You can specify conditions on the joined tables using the regular Array and String conditions. Hash conditions provides a special syntax for specifying conditions for the joined tables:

code:
time_range = (Time.now.midnight - 1.day)..Time.now.midnight
Client.joins(:orders).where('orders.created_at' => time_range)
An alternative and cleaner syntax is to nest the hash conditions:

code:
time_range = (Time.now.midnight - 1.day)..Time.now.midnight
Client.joins(:orders).where(:orders => {:created_at => time_range})

asveepay
Jul 7, 2005
internobody

Lamont Cranston posted:

Does anyone know how I can include associated objects in a query according to a scope? I have Companies with many Jobs, but Jobs expire after a certain amount of time, so when I do Company.includes(:jobs) I want to be able to limit what it includes to just active jobs. Is there any way to do this? I already have an 'active' scope on Jobs, and I was hoping I would be able to reuse that, but I'll take anything.

You can reuse scopes, just provide the name in the includes:

code:
Company.includes(:active_jobs)
If you're using it in a view, like in a collection, then:

code:
<%= select_tag(:job_id, option_groups_from_collection_for_select(Company.includes(:jobs).all, :active_jobs, :company_name, :id, :job_name), :include_blank => true) %>

A MIRACLE
Sep 17, 2007

All right. It's Saturday night; I have no date, a two-liter bottle of Shasta and my all-Rush mix-tape... Let's rock.

I have a scope-related question. I've implemented a many-to-many relationship in my app between categories and events. I want to be able to filter by a specific category. Here's the relevant code, (forgive me for its horribleness):

code:
class EventsController < ApplicationController
    @events = Event.date_filter(params[:from], params[:to])
                   .group_filter(params[:group])
                   .search(params[:keyword])
                   .order('starts_at')
                   .paginate(:page => params[:page], :per_page => 15 )
...
end

class Event < ActiveRecord::Base
  ...

  has_and_belongs_to_many :groups

  ...

  def self.group_filter(arg={})
    unless arg['group_id'].empty?
      g_id = arg['group_id']
      where 'group_ids = ?', g_id
    else
      scoped
    end
  end

end

schema.rb, join table:
  create_table "events_groups", :id => false, :force => true do |t|
    t.integer "event_id"
    t.integer "group_id"
  end

the specific error I'm getting is
code:
PGError: ERROR:  column "group_ids" does not exist
Right now everything seems to be in place but my group_filter scoping, specifically the line `where 'group_ids = ?', g_id`. There's no "group_ids" column obviously. I do have Event#group_ids method available though through the `has_and_belongs_to_many` method. How can I scope by category selection?

A MIRACLE fucked around with this message at 16:21 on Oct 14, 2011

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

A MIRACLE posted:

code:
  def self.group_filter(arg={})
    […]
      where 'group_ids = ?', g_id
    […]
end

  create_table "events_groups", :id => false, :force => true do |t|
    t.integer "event_id"
    t.integer "group_id"
  end
the specific error I'm getting is
code:
PGError: ERROR:  column "group_ids" does not exist
You're doing a where for the group_ids column which doesn't exist.

BrokenDynasty
Dec 25, 2003

Can anyone recommend any rails log parsing gems/plugins that dump all the log file goodies into a DB?

I tried using request-log-analyzer to parse some log files and dump to a DB but couldn't get past an error that it kept throwing. The log parsing works fine when I don't pass the database storing option through, but when i do it chokes with:

/Users/usernamehere/.rvm/gems/ruby-1.8.7-p352/gems/activerecord-3.1.0/lib/active_record/base.rb:1082:in `method_missing': undefined method `class_inheritable_accessor' for RequestLogAnalyzer::Database::Base(abstract):Class (NoMethodError)

NotShadowStar
Sep 20, 2000
That looks like a bug. File an issue

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

BrokenDynasty posted:

Can anyone recommend any rails log parsing gems/plugins that dump all the log file goodies into a DB?

I tried using request-log-analyzer to parse some log files and dump to a DB but couldn't get past an error that it kept throwing. The log parsing works fine when I don't pass the database storing option through, but when i do it chokes with:

/Users/usernamehere/.rvm/gems/ruby-1.8.7-p352/gems/activerecord-3.1.0/lib/active_record/base.rb:1082:in `method_missing': undefined method `class_inheritable_accessor' for RequestLogAnalyzer::Database::Base(abstract):Class (NoMethodError)

Do you have more of the stack trace?

ZanderZ
Apr 7, 2011

by T. Mascis
I've been avoiding test driven development like the plague. Up till now, my situation has been "If it works in a web browser, it's all good!" which isn't gonna fly for much longer.

I need some help understanding rspec and how it works. I'm using dos and have no idea how to test code. A good instance would be making sure a password has a minimum of 6 characters and one number.

Does anyone have a link to the most basic tutorial on how to test a script and/or install rspec? (I'm not even sure if it's installed or not.) I feel pathetic that I've been testing in the browser.

NotShadowStar
Sep 20, 2000

ZanderZ posted:

I've been avoiding test driven development like the plague. Up till now, my situation has been "If it works in a web browser, it's all good!" which isn't gonna fly for much longer.

I need some help understanding rspec and how it works. I'm using dos and have no idea how to test code. A good instance would be making sure a password has a minimum of 6 characters and one number.

Does anyone have a link to the most basic tutorial on how to test a script and/or install rspec? (I'm not even sure if it's installed or not.) I feel pathetic that I've been testing in the browser.

Read this book

If your answer is 'I'm not gonna read a book' gently caress you, read the book.

Anveo
Mar 23, 2002
You definitely want the above book. In addition the free Rails Tutorial will walk you through creating a twitter clone test-first using modern testing tools.

Deus Rex
Mar 5, 2005

Not sure what thread to put this in, but I figured this was best:

My project right now is using Compass to compile CSS files from SASS source. The SASS files live in /views/stylesheets/, and when it detects changes Compass puts the compiled CSS into /public/stylesheets/.

Is there any reason I should check the compiled CSS into git since the SASS is already checked-in and Compass will generate the CSS from scratch with a simple rake styles compile anyhow?

Pardot
Jul 25, 2001




Deus Rex posted:

Is there any reason I should check the compiled CSS into git since the SASS is already checked-in and Compass will generate the CSS from scratch with a simple rake styles compile anyhow?

Your intuition is correct. Generally it's a good idea to avoid checking in compiled things.

Deus Rex
Mar 5, 2005

Pardot posted:

Your intuition is correct. Generally it's a good idea to avoid checking in compiled things.

Neat! I thought I would run into an issue because my app is deployed to Heroku and thus Compass wouldn't be able to write the compiled stylesheets, but it turns out Heroku already has an article on getting around that. :swoon:

Pardot
Jul 25, 2001




Deus Rex posted:

Neat! I thought I would run into an issue because my app is deployed to Heroku and thus Compass wouldn't be able to write the compiled stylesheets, but it turns out Heroku already has an article on getting around that. :swoon:

You should be on the cedar stack, and if you are, everything is writable and you don't need to do anything special. It's still ephemeral, of course, but you don't have to dance around with /tmp

Also easiest is if you just have it compile on app boot, but if you want to get fancy if you have it compile with rake assets:precompile it'll happen at slug creation time.

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug

Pardot posted:

You should be on the cedar stack, and if you are, everything is writable and you don't need to do anything special. It's still ephemeral, of course, but you don't have to dance around with /tmp

I committed some compiled poo poo on Sunday just to get the app working, but tomorrow it's definitely moving to cedar.

Adbot
ADBOT LOVES YOU

Cocoa Crispies
Jul 20, 2001

Vehicular Manslaughter!

Pillbug
Deploying to Heroku Cedar, having just ripped the precompiled assets out:

code:
-----> Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       fatal: Not a git repository (or any of the parent directories): .git
       rake aborted!
       royal-purple-linen.jpg isn't precompiled
       (in /tmp/build_1gpffdtbcfgof/app/assets/stylesheets/base.sass)
       
       Tasks: TOP => assets:precompile
       (See full trace by running task with --trace)
       Precompiling assets failed, enabling runtime asset compilation
How did I make rake assets:precompile depend on git?

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply