sudo add-apt-repository ppa:gnome-terminator
sudo apt-get update
sudo apt-get install terminatorTerminator should be setup as default now. Restart your terminal (shortcut: "Ctrl+Alt+T").
gem 'browserify-rails', '1.5.0' # until fix: https://github.com/browserify-rails/browserify-rails/issues/101
gem 'react-rails'Browserify-rails allows to use browserify within assets pipeline. React-rails is here only to allow to use #react_component (and thus, prerendering).
Note that jquery-rails can be removed from Gemfile, the npm version of jquery and jquery-ujs will be used instead.
I've been following this blog post on how to set up an api-only Rails 5 application. One of the sections talks about creating a subdomain for your api
Rails.application.routes.draw do
constraints subdomain: "api" do
scope module: "api" do| # Channel | |
| class CommentsChannel < ApplicationCable::Channel | |
| def self.broadcast_comment(comment) | |
| broadcast_to comment.message, comment: CommentsController.render( | |
| partial: 'comments/comment', locals: { comment: comment } | |
| ) | |
| end | |
| def follow(data) | |
| stop_all_streams |
| require 'zlib' | |
| module FeatureFlags | |
| BETA_ACCOUNTS = %w(subdomain1 subdomain2) | |
| FLAGS = { | |
| :new_import_flow => { | |
| :percentage => 10, | |
| :account_subdomains => [] | |
| }, |
| // connect() is a function that injects Redux-related props into your component. | |
| // You can inject data and callbacks that change that data by dispatching actions. | |
| function connect(mapStateToProps, mapDispatchToProps) { | |
| // It lets us inject component as the last step so people can use it as a decorator. | |
| // Generally you don't need to worry about it. | |
| return function (WrappedComponent) { | |
| // It returns a component | |
| return class extends React.Component { | |
| render() { | |
| return ( |
| Vue.component('child', { | |
| ready(){ | |
| // send flash message | |
| this.$root.$broadcast('flashMessage',{ | |
| text: 'Better check yourself, you\'re not looking too good.', | |
| type: 'warning',//optional | |
| important: false,//optional | |
| timeout: 5000//optional | |
| }); |
| # Navigating | |
| visit('/projects') | |
| visit(post_comments_path(post)) | |
| expect(page).to have_current_path(post_comments_path(post)) | |
| # Clicking links and buttons | |
| click_link('id-of-link') | |
| click_link('Link Text') | |
| click_button('Save') | |
| click_on('Link Text') # clicks on either links or buttons |
| import React, { Component } from 'react' | |
| import { Redirect } from 'react-router' | |
| export default class ContactForm extends Component { | |
| constructor () { | |
| super(); | |
| this.state = { | |
| fireRedirect: false | |
| } | |
| } |