Я создал базовую платформу для веб-приложений (некоторые статические страницы, аутентификация пользователя, модульное / интеграционное тестирование с помощью rspec). Я хотел бы использовать это в качестве основы для будущих веб-приложений, но мне нужно настроить способ его переименования после клонирования из github. Мне помогли с генерацией кода переименования здесь] 1 , но я пытаюсь понять, как его интегрировать.
Я изначально писал, что код переименования был в rakefile, но теперь я думаю, что, возможно, он должен быть в контроллере. К сожалению, я не смог заставить мой код работать. У меня есть представление, которое позволяет пользователю вводить новое имя для приложения. Идея состоит в том, что пользователь клонирует репозиторий фреймворка, перейдет в каталог фреймворка, запустит сервер rails, а затем перейдет на локальный хост в своем браузере, чтобы переименовать файл оттуда. Но представление, которое должно быть включено, не работает.
views/namer/new/html.erb
<h1>Rails Framework</h1>
<%= form_tag "/namer" do %>
<%= text_field_tag "appname" %>
<%= submit_tag "Name Your App" , :action => 'create' %>
<% end %>
Я не могу заставить действие "отправить" работать правильно. Вот как выглядит мой контроллер.
controllers/namer_controller.rb
class NamerController < ApplicationController
def index
render('new')
end
def new
end
def create
@appname = Namer.new(params[:appname])
#first, change any instances of the term "framework" to the new name of the app
file_names = ['config/environments/test.rb', 'config/environments/production.rb',
'config/environment.rb']
file_names.each do |file_name|
text = File.read(file_name)
File.open(file_name, "w") { |file| file << text.gsub("Framework", @appname) }
end
#next,change the root path away from namer#new
file_name ='config/routes.rb'
text = File.read(file_name)
File.open(file_name, "w") { |file| file << text.gsub("namer#new", "pages#home") }
flash[:notice] = "Enjoy your app."
render('pages/home')
end
end
Есть идеи, что я делаю не так?
Кроме того, действительно ли контроллер является лучшим местом для «переименования» кода?
edit: вот мой файл route.rb.
Framework::Application.routes.draw do
resources :users
resources :sessions, :only => [:new, :create, :destroy]
match '/signup', :to => 'users#new'
match '/signin', :to => 'sessions#new'
match '/signout', :to => 'sessions#destroy'
match '/contact', :to => 'pages#contact'
match '/about', :to => 'pages#about'
match '/help', :to => 'pages#help'
root :to => "namer#new"
match ':controller(/:action(/:id(.:format)))'
ОБНОВЛЕНИЕ: я изменил свой код несколькими способами.
- Маршруты: добавлено сообщение '/ namer' => 'namer # create'
- Создана модель Renamer. Models / renamer.rb - это просто «имя класса», а затем «конец». (Я удалил «
- Создан файл граблей для кода переименования. Это просто называется "renamer.rake".
Все выглядит хорошо, но я все еще ищу способ вызвать файл рейка с контроллера. Есть предложения?
ОБНОВЛЕНИЕ 2: Вот мой пересмотренный метод Create для моего контроллера. Теперь код переименования здесь, а не в файле rake.
def create
@appname = Namer.new(params[:appname])
file_names = ['config/environments/test.rb', 'config/environments/production.rb',
'config/environment.rb']
file_names.each do |file_name|
text = File.read(file_name)
File.open(file_name, "w") { |file| file << text.gsub("Framework", @appname) }
flash[:notice] = "Enjoy your app."
render('pages/home')
end