├── log └── .keep ├── app ├── mailers │ └── .keep ├── models │ ├── .keep │ ├── concerns │ │ └── .keep │ └── comment.rb ├── assets │ ├── images │ │ ├── .keep │ │ └── gundam.jpg │ ├── javascripts │ │ ├── application.js │ │ ├── components.js │ │ └── react_components │ │ │ ├── _comment.js.jsx │ │ │ ├── _comment_list.js.jsx │ │ │ ├── _comment_box.js.jsx │ │ │ └── _comment_form.js.jsx │ └── stylesheets │ │ ├── _base.sass │ │ └── application.css ├── controllers │ ├── concerns │ │ └── .keep │ ├── application_controller.rb │ └── comments_controller.rb ├── helpers │ └── application_helper.rb └── views │ ├── comments │ └── index.html.erb │ └── layouts │ └── application.html.erb ├── lib ├── assets │ └── .keep └── tasks │ └── .keep ├── public ├── favicon.ico ├── robots.txt ├── 500.html ├── 422.html └── 404.html ├── test ├── helpers │ ├── .keep │ ├── home_helper_test.rb │ └── comments_helper_test.rb ├── mailers │ └── .keep ├── models │ ├── .keep │ └── comment_test.rb ├── controllers │ ├── .keep │ ├── comments_controller_test.rb │ └── home_controller_test.rb ├── fixtures │ ├── .keep │ └── comments.yml ├── integration │ └── .keep └── test_helper.rb ├── vendor └── assets │ ├── javascripts │ └── .keep │ └── stylesheets │ └── .keep ├── bin ├── rake ├── bundle └── rails ├── config ├── routes.rb ├── boot.rb ├── environment.rb ├── initializers │ ├── session_store.rb │ ├── filter_parameter_logging.rb │ ├── mime_types.rb │ ├── backtrace_silencers.rb │ ├── wrap_parameters.rb │ ├── inflections.rb │ └── secret_token.rb ├── locales │ └── en.yml ├── database.yml ├── application.rb └── environments │ ├── development.rb │ ├── test.rb │ └── production.rb ├── config.ru ├── db ├── migrate │ └── 20140315030553_create_comments.rb ├── seeds.rb └── schema.rb ├── Rakefile ├── .gitignore ├── README.md ├── Gemfile └── Gemfile.lock /log/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/mailers/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/models/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/assets/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/tasks/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/helpers/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/mailers/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/models/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/assets/images/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/controllers/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/integration/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/models/concerns/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/controllers/concerns/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/assets/javascripts/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/models/comment.rb: -------------------------------------------------------------------------------- 1 | class Comment < ActiveRecord::Base 2 | end 3 | -------------------------------------------------------------------------------- /app/helpers/application_helper.rb: -------------------------------------------------------------------------------- 1 | module ApplicationHelper 2 | end 3 | -------------------------------------------------------------------------------- /bin/rake: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require_relative '../config/boot' 3 | require 'rake' 4 | Rake.application.run 5 | -------------------------------------------------------------------------------- /test/helpers/home_helper_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class HomeHelperTest < ActionView::TestCase 4 | end 5 | -------------------------------------------------------------------------------- /app/assets/images/gundam.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bensmithett/sample-react-rails-app/HEAD/app/assets/images/gundam.jpg -------------------------------------------------------------------------------- /test/helpers/comments_helper_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class CommentsHelperTest < ActionView::TestCase 4 | end 5 | -------------------------------------------------------------------------------- /config/routes.rb: -------------------------------------------------------------------------------- 1 | SampleReactRailsApp::Application.routes.draw do 2 | resources :comments 3 | root :to => redirect("/comments") 4 | end 5 | -------------------------------------------------------------------------------- /bin/bundle: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) 3 | load Gem.bin_path('bundler', 'bundle') 4 | -------------------------------------------------------------------------------- /app/assets/javascripts/application.js: -------------------------------------------------------------------------------- 1 | //= require jquery 2 | 3 | //= require react 4 | //= require react_ujs 5 | 6 | //= require_tree ./react_components 7 | -------------------------------------------------------------------------------- /bin/rails: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | APP_PATH = File.expand_path('../../config/application', __FILE__) 3 | require_relative '../config/boot' 4 | require 'rails/commands' 5 | -------------------------------------------------------------------------------- /test/models/comment_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class CommentTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /config.ru: -------------------------------------------------------------------------------- 1 | # This file is used by Rack-based servers to start the application. 2 | 3 | require ::File.expand_path('../config/environment', __FILE__) 4 | run Rails.application 5 | -------------------------------------------------------------------------------- /app/assets/javascripts/components.js: -------------------------------------------------------------------------------- 1 | // A manifest containing all React components. 2 | // This file is used by react-rails for server-rendering components. 3 | 4 | //= require_tree ./react_components -------------------------------------------------------------------------------- /config/boot.rb: -------------------------------------------------------------------------------- 1 | # Set up gems listed in the Gemfile. 2 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) 3 | 4 | require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) 5 | -------------------------------------------------------------------------------- /config/environment.rb: -------------------------------------------------------------------------------- 1 | # Load the Rails application. 2 | require File.expand_path('../application', __FILE__) 3 | 4 | # Initialize the Rails application. 5 | SampleReactRailsApp::Application.initialize! 6 | -------------------------------------------------------------------------------- /test/controllers/comments_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class CommentsControllerTest < ActionController::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /config/initializers/session_store.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | SampleReactRailsApp::Application.config.session_store :cookie_store, key: '_sample-react-rails-app_session' 4 | -------------------------------------------------------------------------------- /app/views/comments/index.html.erb: -------------------------------------------------------------------------------- 1 | <%= react_component('CommentBox', 2 | {:presenter => @presenter.to_json, :imgSrc => image_path("gundam.jpg")}, 3 | {:prerender => true}) %> 4 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file 2 | # 3 | # To ban all spiders from the entire site uncomment the next two lines: 4 | # User-agent: * 5 | # Disallow: / 6 | -------------------------------------------------------------------------------- /test/fixtures/comments.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html 2 | 3 | one: 4 | author: MyString 5 | text: MyText 6 | 7 | two: 8 | author: MyString 9 | text: MyText 10 | -------------------------------------------------------------------------------- /test/controllers/home_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class HomeControllerTest < ActionController::TestCase 4 | test "should get index" do 5 | get :index 6 | assert_response :success 7 | end 8 | 9 | end 10 | -------------------------------------------------------------------------------- /app/assets/stylesheets/_base.sass: -------------------------------------------------------------------------------- 1 | .content 2 | font-family: sans-serif 3 | margin: 0 auto 4 | max-width: 400px 5 | position: relative 6 | 7 | img 8 | max-width: 100% 9 | 10 | textarea 11 | height: 70px 12 | width: 100% 13 | -------------------------------------------------------------------------------- /config/initializers/filter_parameter_logging.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Configure sensitive parameters which will be filtered from the log file. 4 | Rails.application.config.filter_parameters += [:password] 5 | -------------------------------------------------------------------------------- /config/initializers/mime_types.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new mime types for use in respond_to blocks: 4 | # Mime::Type.register "text/richtext", :rtf 5 | # Mime::Type.register_alias "text/html", :iphone 6 | -------------------------------------------------------------------------------- /app/controllers/application_controller.rb: -------------------------------------------------------------------------------- 1 | class ApplicationController < ActionController::Base 2 | # Prevent CSRF attacks by raising an exception. 3 | # For APIs, you may want to use :null_session instead. 4 | protect_from_forgery with: :exception 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20140315030553_create_comments.rb: -------------------------------------------------------------------------------- 1 | class CreateComments < ActiveRecord::Migration 2 | def change 3 | create_table :comments do |t| 4 | t.string :author 5 | t.text :text 6 | 7 | t.timestamps 8 | end 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | # Add your own tasks in files placed in lib/tasks ending in .rake, 2 | # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. 3 | 4 | require File.expand_path('../config/application', __FILE__) 5 | 6 | SampleReactRailsApp::Application.load_tasks 7 | -------------------------------------------------------------------------------- /app/assets/javascripts/react_components/_comment.js.jsx: -------------------------------------------------------------------------------- 1 | var Comment = React.createClass({ 2 | render: function () { 3 | return ( 4 |
{ this.props.text }
7 |If you are the application owner check the logs for more information.
56 | 57 | 58 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | 3 | # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' 4 | gem 'rails', '4.1.8' 5 | 6 | # Use postgres as the database for Active Record 7 | gem 'pg' 8 | 9 | # Use SCSS for stylesheets 10 | gem 'sass-rails', '~> 4.0.2' 11 | 12 | # Use Uglifier as compressor for JavaScript assets 13 | gem 'uglifier', '>= 1.3.0' 14 | 15 | # Use CoffeeScript for .js.coffee assets and views 16 | gem 'coffee-rails', '~> 4.0.0' 17 | 18 | # See https://github.com/sstephenson/execjs#readme for more supported runtimes 19 | gem 'therubyracer', platforms: :ruby 20 | 21 | # Use jquery as the JavaScript library 22 | gem 'jquery-rails' 23 | 24 | # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks 25 | # gem 'turbolinks' 26 | 27 | # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder 28 | gem 'jbuilder', '~> 1.2' 29 | 30 | group :doc do 31 | # bundle exec rake doc:rails generates the API under doc/api. 32 | gem 'sdoc', require: false 33 | end 34 | 35 | # Use ActiveModel has_secure_password 36 | # gem 'bcrypt', '~> 3.1.7' 37 | 38 | # Use unicorn as the app server 39 | # gem 'unicorn' 40 | 41 | # Use Capistrano for deployment 42 | # gem 'capistrano', group: :development 43 | 44 | # Use debugger 45 | # gem 'debugger', group: [:development, :test] 46 | 47 | # Server-rendering isn't in 0.x, need to grab the 1.x prerelease 48 | gem 'react-rails', '~> 1.0.0.pre', github: 'reactjs/react-rails' 49 | 50 | gem 'rails_12factor', group: :production 51 | -------------------------------------------------------------------------------- /public/422.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |Maybe you tried to change something you didn't have access to.
55 |If you are the application owner check the logs for more information.
57 | 58 | 59 | -------------------------------------------------------------------------------- /public/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |You may have mistyped the address or the page may have moved.
55 |If you are the application owner check the logs for more information.
57 | 58 | 59 | -------------------------------------------------------------------------------- /config/environments/test.rb: -------------------------------------------------------------------------------- 1 | SampleReactRailsApp::Application.configure do 2 | # Settings specified here will take precedence over those in config/application.rb. 3 | 4 | # The test environment is used exclusively to run your application's 5 | # test suite. You never need to work with it otherwise. Remember that 6 | # your test database is "scratch space" for the test suite and is wiped 7 | # and recreated between test runs. Don't rely on the data there! 8 | config.cache_classes = true 9 | 10 | # Do not eager load code on boot. This avoids loading your whole application 11 | # just for the purpose of running a single test. If you are using a tool that 12 | # preloads Rails for running tests, you may have to set it to true. 13 | config.eager_load = false 14 | 15 | # Configure static asset server for tests with Cache-Control for performance. 16 | config.serve_static_assets = true 17 | config.static_cache_control = "public, max-age=3600" 18 | 19 | # Show full error reports and disable caching. 20 | config.consider_all_requests_local = true 21 | config.action_controller.perform_caching = false 22 | 23 | # Raise exceptions instead of rendering exception templates. 24 | config.action_dispatch.show_exceptions = false 25 | 26 | # Disable request forgery protection in test environment. 27 | config.action_controller.allow_forgery_protection = false 28 | 29 | # Tell Action Mailer not to deliver emails to the real world. 30 | # The :test delivery method accumulates sent emails in the 31 | # ActionMailer::Base.deliveries array. 32 | config.action_mailer.delivery_method = :test 33 | 34 | # Print deprecation notices to the stderr. 35 | config.active_support.deprecation = :stderr 36 | end 37 | -------------------------------------------------------------------------------- /config/environments/production.rb: -------------------------------------------------------------------------------- 1 | SampleReactRailsApp::Application.configure do 2 | # Settings specified here will take precedence over those in config/application.rb. 3 | 4 | # Code is not reloaded between requests. 5 | config.cache_classes = true 6 | 7 | # Eager load code on boot. This eager loads most of Rails and 8 | # your application in memory, allowing both thread web servers 9 | # and those relying on copy on write to perform better. 10 | # Rake tasks automatically ignore this option for performance. 11 | config.eager_load = true 12 | 13 | # Full error reports are disabled and caching is turned on. 14 | config.consider_all_requests_local = false 15 | config.action_controller.perform_caching = true 16 | 17 | # Enable Rack::Cache to put a simple HTTP cache in front of your application 18 | # Add `rack-cache` to your Gemfile before enabling this. 19 | # For large-scale production use, consider using a caching reverse proxy like nginx, varnish or squid. 20 | # config.action_dispatch.rack_cache = true 21 | 22 | # Disable Rails's static asset server (Apache or nginx will already do this). 23 | config.serve_static_assets = false 24 | 25 | # Compress JavaScripts and CSS. 26 | config.assets.js_compressor = :uglifier 27 | # config.assets.css_compressor = :sass 28 | 29 | # Do not fallback to assets pipeline if a precompiled asset is missed. 30 | config.assets.compile = false 31 | 32 | # Generate digests for assets URLs. 33 | config.assets.digest = true 34 | 35 | # Version of your assets, change this if you want to expire all your assets. 36 | config.assets.version = '1.0' 37 | 38 | # Specifies the header that your server uses for sending files. 39 | # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache 40 | # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx 41 | 42 | # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. 43 | # config.force_ssl = true 44 | 45 | # Set to :debug to see everything in the log. 46 | config.log_level = :info 47 | 48 | # Prepend all log lines with the following tags. 49 | # config.log_tags = [ :subdomain, :uuid ] 50 | 51 | # Use a different logger for distributed setups. 52 | # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new) 53 | 54 | # Use a different cache store in production. 55 | # config.cache_store = :mem_cache_store 56 | 57 | # Enable serving of images, stylesheets, and JavaScripts from an asset server. 58 | # config.action_controller.asset_host = "http://assets.example.com" 59 | 60 | # Precompile additional assets. 61 | # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. 62 | # config.assets.precompile += %w( search.js ) 63 | 64 | # Ignore bad email addresses and do not raise email delivery errors. 65 | # Set this to true and configure the email server for immediate delivery to raise delivery errors. 66 | # config.action_mailer.raise_delivery_errors = false 67 | 68 | # Enable locale fallbacks for I18n (makes lookups for any locale fall back to 69 | # the I18n.default_locale when a translation can not be found). 70 | config.i18n.fallbacks = true 71 | 72 | # Send deprecation notices to registered listeners. 73 | config.active_support.deprecation = :notify 74 | 75 | # Disable automatic flushing of the log to improve performance. 76 | # config.autoflush_log = false 77 | 78 | # Use default logging formatter so that PID and timestamp are not suppressed. 79 | config.log_formatter = ::Logger::Formatter.new 80 | end 81 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GIT 2 | remote: git://github.com/reactjs/react-rails.git 3 | revision: b0dd8c3296ca103384717ff8e5f469a6e2313baf 4 | specs: 5 | react-rails (1.0.0.pre) 6 | connection_pool 7 | execjs 8 | rails (>= 3.1) 9 | react-source (= 0.12) 10 | 11 | GEM 12 | remote: https://rubygems.org/ 13 | specs: 14 | actionmailer (4.1.8) 15 | actionpack (= 4.1.8) 16 | actionview (= 4.1.8) 17 | mail (~> 2.5, >= 2.5.4) 18 | actionpack (4.1.8) 19 | actionview (= 4.1.8) 20 | activesupport (= 4.1.8) 21 | rack (~> 1.5.2) 22 | rack-test (~> 0.6.2) 23 | actionview (4.1.8) 24 | activesupport (= 4.1.8) 25 | builder (~> 3.1) 26 | erubis (~> 2.7.0) 27 | activemodel (4.1.8) 28 | activesupport (= 4.1.8) 29 | builder (~> 3.1) 30 | activerecord (4.1.8) 31 | activemodel (= 4.1.8) 32 | activesupport (= 4.1.8) 33 | arel (~> 5.0.0) 34 | activesupport (4.1.8) 35 | i18n (~> 0.6, >= 0.6.9) 36 | json (~> 1.7, >= 1.7.7) 37 | minitest (~> 5.1) 38 | thread_safe (~> 0.1) 39 | tzinfo (~> 1.1) 40 | arel (5.0.1.20140414130214) 41 | builder (3.2.2) 42 | coffee-rails (4.0.1) 43 | coffee-script (>= 2.2.0) 44 | railties (>= 4.0.0, < 5.0) 45 | coffee-script (2.2.0) 46 | coffee-script-source 47 | execjs 48 | coffee-script-source (1.7.0) 49 | connection_pool (2.0.0) 50 | erubis (2.7.0) 51 | execjs (2.0.2) 52 | hike (1.2.3) 53 | i18n (0.6.11) 54 | jbuilder (1.5.3) 55 | activesupport (>= 3.0.0) 56 | multi_json (>= 1.2.0) 57 | jquery-rails (3.1.0) 58 | railties (>= 3.0, < 5.0) 59 | thor (>= 0.14, < 2.0) 60 | json (1.8.1) 61 | libv8 (3.16.14.7) 62 | mail (2.6.3) 63 | mime-types (>= 1.16, < 3) 64 | mime-types (2.4.3) 65 | minitest (5.4.3) 66 | multi_json (1.10.1) 67 | pg (0.17.1) 68 | rack (1.5.2) 69 | rack-test (0.6.2) 70 | rack (>= 1.0) 71 | rails (4.1.8) 72 | actionmailer (= 4.1.8) 73 | actionpack (= 4.1.8) 74 | actionview (= 4.1.8) 75 | activemodel (= 4.1.8) 76 | activerecord (= 4.1.8) 77 | activesupport (= 4.1.8) 78 | bundler (>= 1.3.0, < 2.0) 79 | railties (= 4.1.8) 80 | sprockets-rails (~> 2.0) 81 | rails_12factor (0.0.2) 82 | rails_serve_static_assets 83 | rails_stdout_logging 84 | rails_serve_static_assets (0.0.2) 85 | rails_stdout_logging (0.0.3) 86 | railties (4.1.8) 87 | actionpack (= 4.1.8) 88 | activesupport (= 4.1.8) 89 | rake (>= 0.8.7) 90 | thor (>= 0.18.1, < 2.0) 91 | rake (10.3.2) 92 | rdoc (4.1.1) 93 | json (~> 1.4) 94 | react-source (0.12.0) 95 | ref (1.0.5) 96 | sass (3.2.19) 97 | sass-rails (4.0.3) 98 | railties (>= 4.0.0, < 5.0) 99 | sass (~> 3.2.0) 100 | sprockets (~> 2.8, <= 2.11.0) 101 | sprockets-rails (~> 2.0) 102 | sdoc (0.4.0) 103 | json (~> 1.8) 104 | rdoc (~> 4.0, < 5.0) 105 | sprockets (2.11.0) 106 | hike (~> 1.2) 107 | multi_json (~> 1.0) 108 | rack (~> 1.0) 109 | tilt (~> 1.1, != 1.3.0) 110 | sprockets-rails (2.2.0) 111 | actionpack (>= 3.0) 112 | activesupport (>= 3.0) 113 | sprockets (>= 2.8, < 4.0) 114 | therubyracer (0.12.1) 115 | libv8 (~> 3.16.14.0) 116 | ref 117 | thor (0.19.1) 118 | thread_safe (0.3.4) 119 | tilt (1.4.1) 120 | tzinfo (1.2.2) 121 | thread_safe (~> 0.1) 122 | uglifier (2.5.0) 123 | execjs (>= 0.3.0) 124 | json (>= 1.8.0) 125 | 126 | PLATFORMS 127 | ruby 128 | 129 | DEPENDENCIES 130 | coffee-rails (~> 4.0.0) 131 | jbuilder (~> 1.2) 132 | jquery-rails 133 | pg 134 | rails (= 4.1.8) 135 | rails_12factor 136 | react-rails (~> 1.0.0.pre)! 137 | sass-rails (~> 4.0.2) 138 | sdoc 139 | therubyracer 140 | uglifier (>= 1.3.0) 141 | --------------------------------------------------------------------------------