Can we move guides.rubyonrails.org to be behind a CDN?

I was pointed to the forum after posting an issue on rails/hompage.

One thing I’m noticing about the current https://guides.rubyonrails.org/ website is its speed, especially outside of the USA. If you run speed testing tool such as Catchpoint Webpage Test or Pingdom Webpage Speed Test, and change your location, the load time can increase by up to an extra second.

Would there be any interest in putting the cutting guides site behind a CDN? Or something like Netlify which handles static site generation?

There are a few others things picked up by web.dev, which I’d be happy to help with also :slight_smile:

3 Likes

Hello @Mike_Rogers, I’ve been planning to change how guides.rubyonrails.org and api.rubyonrails.org are built.

Currently they are being hosted on a private DigitalOcean droplet, and are being generated by a legacy set of scripts.

My goal is that the documentation is generated automatically during CI, and can be uploaded to some static host (like netlify) or other CDN.

The benefit of using CI is that people changing Rails and it’s documentation will get feedback when the docs break, ensuring only well-built documentation makes it to the public. The second benefit is that it’s entirely automated and transparent as to how and when it works. There was a recent incident with the old documentation server, and having to SSH in and regenerate docs by hand was unfortunate. Lastly, as you put – being able to push the docs to some CDN would greatly benefit folks reading them from around the world.

I think migrating guides and API (rdoc) this way should be trivial, the problem is contributors.rubyonrails.org is still served on this old DigitalOcean server as a (non-static) Rails application. So non-trivial to migrate to some static CDN. – but that is arguably less of a priority to Rails devs who just want to read the docs and learn.

6 Likes

Yay! This is awesome to hear :smiley: I’ve been using Netlify on a few of my projects to handle the PR Preview and it’s very nice, so I think a step in that direction would be incredible :smiley:

@zzak https://contributors.rubyonrails.org/ - If you’d like, I’d be super up for creating a static version of this site which is regenerates every few hours :slight_smile: I’ve used this approach on a few site I wrote ( https://ruby-meetup-calendar.mikerogers.io/ - this one being a good example ), and I’d be happy to apply to the approach if you’d like to see? :smiley:

AssetSync is a popular approach that we have used in the past with success. We no longer use it because there’s no need to copy all files to S3 during deploy (rake assets:precompile). Copying files across the network is wasteful and slow, and gets slower as the codebase grows. S3 is also not a CDN, does not have edge servers, and therefore is slower than CDN options.

@Mike_Rogers Thanks for your reply!

https://contributors.rubyonrails.org/ - If you’d like, I’d be super up for creating a static version of this site which is regenerates every few hours :slight_smile: I’ve used this approach on a few site I wrote

IMO this should build every commit to main, like any other CI job.

If you want try setting up CI with CircleCI I will make sure whichever org is developing this has enough credits :slight_smile:

My plan was to reach out to some folks I know at Netlify to see if they would help with the bill, since it’s easy to push a demo there let’s start with that.

Thanks for your help on this! :bow:

If Netlify is a paid option, how about something like CloudFlare? Their basic tier is free and offers CDN. This should I guess work with the current build setup and dynamic content, just changing DNS?

CloudFlare / Netlify both have pretty decent free tiers (Plus I’m happy to donate if we need to use the paid tier) - I’ll try to setup demos for both so we can compare :slight_smile:

Switching to Bridgetown SSG by MikeRogers0 · Pull Request #1 · MikeRogers0/rails-contributors · GitHub - Just a heads up, I’m working on putting together a demo to show off what I have in mind :slight_smile:

It might take me a little while to get it ready, but I’m pretty hyped :smiley:

3 Likes

This post was flagged by the community and is temporarily hidden.