Install Discourse on macOS for development

Yes, do:

rake db:drop db:create db:migrate

Note that this will wipe everything and you will have to create your Admin user account again.


Can someone assist me in how I can update my discourse?

/launcher rebuild app

returns an error.

1 Like

./launcher rebuild app is for discourse_docker based production setup. To update local/development Discourse instance you need:

cd ~/discourse
git pull origin master

I get this error @techAPJ,

error: Your local changes to the following files would be overwritten by merge:
Please commit your changes or stash them before you merge.

The error message is pretty clear:

Please commit your changes or stash them before you merge.

If you want to ignore your local changes, do:

git fetch origin
git reset --hard origin/master

Using the guide from the Ruby on Rails forum, I’m currently stuck on step 7.

This is probably a very “newbie” question, but how do I “point” to the experimental branch that was linked in that topic? I tried a few things and was ultimately giving the Unknown command mini_racer, message every single time.

1 Like

They’re fine asking here.

There are some specific m1 instructions we wrote that we reference on the rails forum in this guide.

I’d have to look on my m1 air later, and maybe my fellow coworks who recently setup new macs might know better if this is even still needed, but there is an example of how to point to a branch in step 7:

gem 'mini_racer', github: 'rubyjs/mini_racer', branch: 'refs/pull/186/head'

So you would edit this line in your local version of discourse/Gemfile:

and then run bundle install.


It’s linked right at the top of the original post.

The topic from the Ruby on Rails forum has been dead for many months now. The OP hasn’t been active since Feburary and hasn’t replied to any comments there asking for help.

There are more people to help me here. Just saying. :wink:

I tried copying that into Terminal and received the same Unknown command mini_racer, error from before.

Admittedly, the guide from the Ruby on Rails forum isn’t as clear as I’d hope in that regard.

Apologies in advance… :pray:


It’s not a command to run. You will need to EDIT the actual text file called “Gemfile” located inside the discourse directory.

1 Like

Doh! :facepalm:

Thanks! Let me try that right now.

In my opinion, somebody should edit the guide from the Ruby on Rails forum and provide further clarification regarding step 7. Just my two cents though.

I will be right back. Hold on a second…

1 Like

Sorry I have to run, but I think that mini_racer fix for m1 macs has been merged in. I just checked my Gemfile on my m1 mac and mine isn’t edited. So I think you can skip step 7.


I ran step 8 and received the Could not locate Gemfile error.

I (think) I was able to figure out step 7, but step 8 is still giving me trouble and is spitting out the error mentioned above.

You need to be inside of the discourse directory when you run bundle install.

Hi @merefield: Can you describe your remote setup a little more?

While developing a theme allows me to add changes on a live site, for developing a plugin I don’t see any way around doing it on my local machine, having the whole discourse codebase there (with my plugin on top of it).

The result is that for any (non-css) change when coding a plugin, when I reload it 1) kicks off my computer’s fan and 2) takes a solid 30 seconds to reload. And if I need to restart the server, it takes several minutes.

Those delays really add up–with the result that it might take me an hour to code something up that with my normal coding flow (where there’s hot reload or at most 2-3 seconds per change) would take 15 minutes.

So, I’d appreciate any suggestions for speeding things up.

This arguably would be better on the Ubuntu topic, as I’m just running that install on a cloud server, fronted by nginx and a full DNS (no docker), so I’m actually addressing the domain. Running everything from the terminal. I’ve even got Ember CLI working well in that set up now.

It’s not that quick either, but fast enough. It has the benefit of being able to run and test full https callback services.

The fastest plugin development environment by far that I’m aware of is local Docker Dev on WSL2 which screams. It’s also extremely simple to maintain. Unfortunately discourse_theme doesn’t work in that environment yet afaik so I’m back to my cloud server for that work.

It’s a little odd why Apple is lagging behind here? The Microsoft engineers have shown themselves to be very canny.


In case someone gets errors trying to install ruby 2.7.3, apparently something changed after Xcode 12 which breaks the install process with rbenv:

I kept getting this, even though I have the latest versions of psych and libyaml installed:

It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.

I tried the workaround they suggest in the guide, but I kept getting the same error and ended up having to use rvm:

rvm install 2.7.3
1 Like

Regarding how to program faster when doing a plugin, I’ve recently changed my approach. And it’s working great. Basically, move any front end stuff to a theme component, and only code the backend stuff in the plugin itself. I know others have figured that out before. But now that I’m doing it, programming is so much faster and nicer. Details here.


While setting up a new M1 MacBook Air, I was unable to run bundle install successfully, getting this error:

An error occurred while installing openssl (2.2.1), and Bundler cannot continue.

This Mac came pre-installed with OpenSSL1.1 and the script installs OpenSSL3.0 through Homebrew. After uninstalling 3.0, bundle install worked as expected.


Hi @alxndr did you ever find a fix?

1 Like

Thank you this was helpful! On OSX Big Sur, at this step

I continually run in to:

An error occurred while installing mini_racer (0.6.1), and Bundler cannot continue.

I’ve confirmed my gcc is up to date, and haven’t had any other issues with gemfile or dependencies up to this point. Any ideas?

For more context:

make: *** [mini_racer_extension.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/nick.moores/discourse/vendor/bundle/ruby/2.6.0/gems/mini_racer-0.6.1 for inspection.
Results logged to /Users/nick.moores/discourse/vendor/bundle/ruby/2.6.0/extensions/universal-darwin-20/2.6.0/mini_racer-0.6.1/gem_make.out

  /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/ext/builder.rb:99:in `run'
  /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/ext/builder.rb:51:in `block in make'
  /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/ext/builder.rb:43:in `each'
  /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/ext/builder.rb:43:in `make'
  /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/ext/ext_conf_builder.rb:62:in `block in build'
  /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/tempfile.rb:295:in `open'
  /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/ext/ext_conf_builder.rb:29:in `build'
  /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/ext/builder.rb:185:in `block in build_extension'
  /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/monitor.rb:230:in `mon_synchronize'
  /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/ext/builder.rb:181:in `build_extension'
  /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/ext/builder.rb:229:in `block in build_extensions'
  /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/ext/builder.rb:226:in `each'
  /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/ext/builder.rb:226:in `build_extensions'
  /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/installer.rb:830:in `build_extensions'
  /Library/Ruby/Gems/2.6.0/gems/bundler-2.2.26/lib/bundler/rubygems_gem_installer.rb:66:in `build_extensions'
  /Library/Ruby/Gems/2.6.0/gems/bundler-2.2.26/lib/bundler/rubygems_gem_installer.rb:26:in `install'
  /Library/Ruby/Gems/2.6.0/gems/bundler-2.2.26/lib/bundler/source/rubygems.rb:192:in `install'
  /Library/Ruby/Gems/2.6.0/gems/bundler-2.2.26/lib/bundler/installer/gem_installer.rb:54:in `install'
  /Library/Ruby/Gems/2.6.0/gems/bundler-2.2.26/lib/bundler/installer/gem_installer.rb:16:in `install_from_spec'
  /Library/Ruby/Gems/2.6.0/gems/bundler-2.2.26/lib/bundler/installer/parallel_installer.rb:186:in `do_install'
  /Library/Ruby/Gems/2.6.0/gems/bundler-2.2.26/lib/bundler/installer/parallel_installer.rb:177:in `block in worker_pool'
  /Library/Ruby/Gems/2.6.0/gems/bundler-2.2.26/lib/bundler/worker.rb:62:in `apply_func'
  /Library/Ruby/Gems/2.6.0/gems/bundler-2.2.26/lib/bundler/worker.rb:57:in `block in process_queue'
  /Library/Ruby/Gems/2.6.0/gems/bundler-2.2.26/lib/bundler/worker.rb:54:in `loop'
  /Library/Ruby/Gems/2.6.0/gems/bundler-2.2.26/lib/bundler/worker.rb:54:in `process_queue'
  /Library/Ruby/Gems/2.6.0/gems/bundler-2.2.26/lib/bundler/worker.rb:91:in `block (2 levels) in create_threads'