{"id":557,"date":"2014-04-06T14:44:15","date_gmt":"2014-04-06T18:44:15","guid":{"rendered":"http:\/\/michaelseneadza.com\/blog\/?p=557"},"modified":"2014-04-06T14:44:15","modified_gmt":"2014-04-06T18:44:15","slug":"ive-finally-found-a-rails-4-x-blogging-engine-gem","status":"publish","type":"post","link":"http:\/\/www.michaelseneadza.com\/blog\/2014\/04\/06\/ive-finally-found-a-rails-4-x-blogging-engine-gem\/","title":{"rendered":"I&#8217;ve Finally Found a Rails 4.x Blogging Engine \/ Gem"},"content":{"rendered":"<p>I can&#8217;t believe how difficult it&#8217;s been to find a good solution for plugging a simple blog into an existing Rails app.  I wanted to add a blog to <a href=\"http:\/\/www.swingtradebot.com\/\" title=\"The Swing Trading Bot\">SwingTradeBot<\/a>, the new site I&#8217;m building but most answers to this question that I&#8217;ve found say to either use RefineryCMS or &#8220;roll your own.  Well I tried Refinery and quickly ran into gem conflicts galore.  As for rolling my own&#8230; I don&#8217;t have time for that &#8212; I&#8217;d rather use something that&#8217;s been thought through and is well suited to the task.  <\/p>\n<p>I was ready to give up and just roll my own when I found <a href=\"https:\/\/github.com\/jipiboily\/monologue\" title=\"Monologue is a basic blogging engine. It is a Rails mountable engine you can mount in your already existing Rails app, or a in a new one!\">the Monologue gem<\/a>.  That looked really promising but then I ran into <a href=\"https:\/\/github.com\/jipiboily\/monologue\/issues\/187\" title=\"Don't know how to build task 'assets:precompile:primary'\">a Rails 4 compatibility issue<\/a>. However, reading through the discussion thread on that issue I discovered that somebody had created <a href=\"https:\/\/github.com\/greyblake\/blogo\" title=\"Mountable blog engine for Ruby on Rails\">the Blogo gem (plugin \/ engine)<\/a>.<\/p>\n<p>It&#8217;s still early days with this gem but so far, so good for the most part.  Installation and set-up went smoothly (in development mode).  Here are some things I ran into after pushing to production (on Heroku):<\/p>\n<ol>\n<li>There&#8217;s a generator to create the admin user (rake blogo:create_user[user_name,user@email.com,password]) &#8211; that didn&#8217;t work in production.  I didn&#8217;t find out until after creating the user manually in a Rails console that I needed to prepend &#8216;RAILS_ENV=production&#8221; to the rake command.<\/li>\n<li>The assets were missing.  running &#8220;RAILS_ENV=production rake assets:precompile&#8221; fixed that.<\/li>\n<li>Note that for comment to appear you need to be signed up for <a href=\"http:\/\/disqus.com\/\">Disqus<\/a> and you need to enter your site&#8217;s short name into the Blogo config.<\/li>\n<li>There are some configuration options that I had to discover via digging through the code.  See below for an example of what I&#8217;ve added to my config\/application.rb<\/li>\n<\/ol>\n<p>Here&#8217;s what&#8217;s in my config\/application.rb:<\/p>\n<p><code><br \/>\n    Blogo.config.site_title = \"SwingTradeBot Blog\"<br \/>\n    Blogo.config.site_subtitle = \"Some clever subtitle...\"<br \/>\n    Blogo.config.keywords = 'stock trading, technical analysis, stock scanning'<br \/>\n    Blogo.config.disqus_shortname = 'swingtradebot'<br \/>\n    Blogo.config.twitter_username = 'swingtradebot'<br \/>\n<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I can&#8217;t believe how difficult it&#8217;s been to find a good solution for plugging a simple blog into an existing Rails app. I wanted to add a blog to SwingTradeBot, the new site I&#8217;m building but most answers to this question that I&#8217;ve found say to either use RefineryCMS or &#8220;roll your own. Well I&hellip; <a class=\"more-link\" href=\"http:\/\/www.michaelseneadza.com\/blog\/2014\/04\/06\/ive-finally-found-a-rails-4-x-blogging-engine-gem\/\">Continue reading <span class=\"screen-reader-text\">I&#8217;ve Finally Found a Rails 4.x Blogging Engine \/ Gem<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","footnotes":""},"categories":[2,16],"tags":[19,20,22],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":566,"url":"http:\/\/www.michaelseneadza.com\/blog\/2014\/05\/02\/calculating-standard-deviations-in-ruby-on-rails-and-postgresql\/","url_meta":{"origin":557,"position":0},"title":"Calculating Standard Deviations in Ruby on Rails (and PostgreSQL)","date":"May 2, 2014","format":false,"excerpt":"I need to calculate some Bollinger Bands (BBs) for SwingTradeBot, which is built in Rails 4. Here's a quick definition of Bollinger Bands: Bollinger Bands\u00ae are volatility bands placed above and below a moving average. Volatility is based on the standard deviation, which changes as volatility increases and decreases. So\u2026","rel":"","context":"In &quot;Technology&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":830,"url":"http:\/\/www.michaelseneadza.com\/blog\/2021\/12\/20\/rails-7s-load_async-doesnt-play-well-with-multi-tenant-apps\/","url_meta":{"origin":557,"position":1},"title":"Rails 7&#8217;s load_async Doesn&#8217;t Play Well with Multi-Tenant Apps","date":"December 20, 2021","format":false,"excerpt":"Disclaimer: I can't speak for all multi-tenant apps but I suspect the vast majority of those which use separate DB schemas will run into the same issue I ran into. I was excited to try out the new Relation#load_async feature in Rails 7 to speed up some pages on SwingTradeBot.\u2026","rel":"","context":"In &quot;Technology&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":574,"url":"http:\/\/www.michaelseneadza.com\/blog\/2014\/08\/06\/slow-responses-from-the-braintree-ruby-gem-try-this-fix\/","url_meta":{"origin":557,"position":2},"title":"Slow Responses from the BrainTree Ruby Gem? Try This Fix.","date":"August 6, 2014","format":false,"excerpt":"A few weeks ago I was tasked with trying to mitigate some timeout issues in a client's Rails app making BrainTree calls. This was becoming more of a problem as the client's users built up more & more history in BrainTree. Apparently you can't paginate the results or ask BrainTree\u2026","rel":"","context":"In &quot;Technology&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":561,"url":"http:\/\/www.michaelseneadza.com\/blog\/2014\/04\/17\/ruby-rails-memoization-gems-memoist-vs-memoizable\/","url_meta":{"origin":557,"position":3},"title":"Ruby \/ Rails Memoization Gems Memoist vs. Memoizable","date":"April 17, 2014","format":false,"excerpt":"I was just adding some memoization to a Rails app and I was exploring the available gems. I'd used Memoist in the past on another project but I couldn't remember why I chose it over other gems. While researching today I found the Memoizable gem and thought that it looked\u2026","rel":"","context":"In &quot;Technology&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":187,"url":"http:\/\/www.michaelseneadza.com\/blog\/2003\/09\/11\/glenns_blogging_epiphany\/","url_meta":{"origin":557,"position":4},"title":"Glenn&#8217;s Blogging Epiphany","date":"September 11, 2003","format":false,"excerpt":"If you're not reading Glenn's blog, Hi, I'm Black, you're missing some great stuff. He's been on a roll of late & I've been meaning to link to several of his posts. But since I've been slacking off of late I haven't had a chance to do so. Today he\u2026","rel":"","context":"In &quot;Blogging&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":29,"url":"http:\/\/www.michaelseneadza.com\/blog\/2003\/06\/27\/newsmonster\/","url_meta":{"origin":557,"position":5},"title":"NewsMonster","date":"June 27, 2003","format":false,"excerpt":"I've been trying to find a good RSS reader\/news reader, and it looks like I just found the one. Sifry has a great synopsis of NewMonster's features. The killer feature, IMO, is that it incorporates many of Technorati's tools. You can download NewsMonster here.","rel":"","context":"In &quot;Blogging&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"http:\/\/www.michaelseneadza.com\/blog\/wp-json\/wp\/v2\/posts\/557"}],"collection":[{"href":"http:\/\/www.michaelseneadza.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.michaelseneadza.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.michaelseneadza.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.michaelseneadza.com\/blog\/wp-json\/wp\/v2\/comments?post=557"}],"version-history":[{"count":0,"href":"http:\/\/www.michaelseneadza.com\/blog\/wp-json\/wp\/v2\/posts\/557\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.michaelseneadza.com\/blog\/wp-json\/wp\/v2\/media?parent=557"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.michaelseneadza.com\/blog\/wp-json\/wp\/v2\/categories?post=557"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.michaelseneadza.com\/blog\/wp-json\/wp\/v2\/tags?post=557"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}