Как обслуживать приложение React с бэкэндом Ruby on Rails 4 - PullRequest
0 голосов
/ 03 апреля 2019

У нас есть полнофункциональное приложение Ruby on Rails, и мы хотели бы превратить его в приложение ReactJS, сохранив при этом код бэкэнда и повторив код внешнего интерфейса.

Наш гемфайл выглядит так:

ruby '2.2.1'
source 'https://rubygems.org' do
  gem 'rails', '4.1.14'
  gem 'uglifier', '>= 1.3.0'
  gem 'coffee-rails', '~> 4.0.0'
  gem 'jquery-rails'
  gem 'jquery-ui-rails'
  gem 'jbuilder', '~> 2.0'
  gem 'sdoc', '~> 0.4.0', group: :doc
  gem 'bootstrap-sass'
  gem 'sass-rails', '>= 3.2'
  gem 'autoprefixer-rails'
  gem 'devise'
  gem 'devise_invitable'
  gem 'devise-token_authenticatable'
  gem 'omniauth'
  gem 'omniauth-facebook'
  gem 'omniauth-google-oauth2'
  gem 'figaro'
  gem 'haml-rails'
  gem 'mysql2', '~> 0.3.18'
  gem 'pundit'
  gem 'rolify'
  gem 'simple_form'
  gem 'wicked_pdf'
  gem 'wkhtmltopdf-binary'
  gem 'axlsx', '2.1.0.pre'
  gem 'axlsx_rails'
  gem 'axlsx_styler'
  group :development do
    gem 'better_errors'
    gem 'binding_of_caller', :platforms => [:mri_21]
    gem 'capistrano'
    gem 'capistrano-bundler'
    gem 'capistrano-rails'
    gem 'capistrano-rails-console'
    gem 'capistrano-rvm'
    gem 'capistrano-pending', :require => false
    gem 'capistrano-sidekiq'
    gem 'html2haml'
    gem 'quiet_assets'
    gem 'rails_layout'
    gem 'magic_encoding'
    gem 'annotate'
  end
  group :development, :test do
    gem 'factory_girl_rails'
    gem 'rspec-rails'
    gem 'letter_opener'
    gem 'bullet'
    gem 'timecop'
  end

  group :test do
    gem 'capybara'
    gem 'database_cleaner'
    gem 'faker'
    gem 'launchy'
    gem 'selenium-webdriver'
    gem 'simplecov'
    gem 'codeclimate-test-reporter', '~> 1.0.0'
  end

  gem 'passenger'
  gem 'passenger-rails'
  gem 'execjs'
  gem 'therubyracer', :platforms => :ruby
  gem 'newrelic_rpm'
  gem 'redis-rails'
  gem 'redis-session-store'
  gem 'redis-rack-cache'
  gem 'rack-cache'
  gem 'actionpack-page_caching'
  gem 'lograge'
  gem 'rocket_pants'
  gem 'active_model_serializers', '~>0.8.1'
  gem 'will_paginate'
  gem 'delocalize'
  gem 'phone'
  gem 'paranoia', '~> 2.0'
  gem 'bh', '~> 1.0'
  gem 'sidekiq'
  gem 'counter_culture'
  gem 'rollbar'
  gem 'oj', '~> 2.12.14'
  gem 'sidetiq'
  gem 'enum_help'
  gem 'sinatra', '>= 1.3.0', :require => nil
  gem 'awesome_print', require: 'ap'
  gem 'ngannotate-rails'
end
source 'https://rails-assets.org' do
  gem 'rails-assets-angular', '1.3.12'
  gem 'rails-assets-leaflet'
  gem 'rails-assets-angular-animate'
  gem 'rails-assets-angular-cookies'
  gem 'rails-assets-angular-resource'
  gem 'rails-assets-angular-sanitize'
  gem 'rails-assets-angular-touch'
  gem 'rails-assets-angular-route'
  gem 'rails-assets-angular-moment'
  gem 'rails-assets-angular-ui-date'
  gem 'rails-assets-angular-xeditable'
  gem 'rails-assets-components-font-awesome', '4.2.0'
  gem 'rails-assets-angular-loading-bar'
  gem 'rails-assets-angular-confirm-click'
  gem 'rails-assets-angular-strap'
  gem 'rails-assets-angular-dialog-service'
  gem 'rails-assets-angular-bootstrap'
  gem 'rails-assets-angular-translate'
  gem 'rails-assets-trNgGrid'
  gem 'rails-assets-accounting.js'
  gem 'rails-assets-angular-ui-notification'
end

Это реалистичная попытка? Я не знаком с Ruby on Rails, и никто из нас не в нашей команде. Кажется, есть много скрытой логики, и мне интересно, если бы некоторая из этой логики помешала бы этому работать на 100%.

1 Ответ

1 голос
/ 03 апреля 2019

Вы только что поделились файлом Gem, но не знаете, как разрабатывается это приложение, поэтому для получения точного ответа недостаточно информации.Но обычно используются два разных метода.

Первый метод

Два отдельных приложения, так как работает ваше приложение ruby ​​on rails, могут создать другое приложение реагирования и использовать все конечные точки, присутствующие в вашем Ruby вПриложение Rails, если вы не можете найти требуемую конечную точку, вы можете проверить уже созданные конечные точки и сделать несколько новых по пути.Надеюсь, это будет проще сделать.

Использование Gem of Ruby on Rails

В этом методе вам нужно разбить ваш проект на части и удалить все Angular Gems, уже присутствующие в вашем проекте, и запуститьс новым интерфейсом с ReactJS.На мой взгляд, для этого требуется гораздо больше знаний о Ruby on Rails, но в итоге вы получите только один проект.

Ваш проект

Как видно из файла Gem, он сильноиспользуя Angular, так что, вероятно, вы запустили его и проверили, имеет ли большинство конечных точек значение Restful.Если да, то я предлагаю перейти к первому методу и создать новое приложение ReactJS, которое будет использовать всю конечную точку, созданную в Ruby на рельсах, что будет больше работать в приложении на стороне React и меньше - в Ruby on Rails.Даже если вы обнаружили, что некоторые конечные точки отсутствуют, вы можете следовать кодированию и действию уже созданных конечных точек, где вы будете дополнять детали.Я понимаю, что будет два разных проекта, но кривая изучения Ruby on Rails и его интеграции с React будет больше, чем два разных проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...