#ruby-on-rails #ubuntu #apache2
#ruby-on-rails #ubuntu #apache2
Вопрос:
Я написал базовое приложение Rails 3, которое отображает форму и форму загрузки по определенным URL-адресам. Вчера все работало нормально, но теперь я столкнулся с несколькими проблемами, которые требуют исправления. Я постараюсь описать каждую проблему как можно лучше. Причина, по которой я их объединяю, заключается в том, что я чувствую, что все они связаны и мешают мне завершить мою задачу.
1. Не удается запустить приложение в режиме разработки По какой-то неизвестной причине я не могу запустить приложение в режиме разработки. В настоящее время я перезаписал производственный файл.rb из среды настройками из среды разработки, чтобы получить фактические трассировки стека.
Я добавил рабочий параметр RailsEnv к своему параметру VirtualHost в apache2, но, похоже, это не имеет никакого значения. Параметры ENV также не являются переменными для производства.
2. Ошибка аргументации при всех вызовах, какой бы вызов я ни выполнял, выдает это сообщение об ошибке. Файл журнала сообщает мне следующее:
Начал ПОЛУЧАТЬ «/» для 192.168.33.82 в чт 07 апреля 00:54:48 -0700 2011
Ошибка аргументации (неправильное количество аргументов (1 вместо 0)):
Визуализировано /usr/lib/ruby/gems/1.8/gems/actionpack-3.0.6/lib/action_dispatch/middleware/templates/rescues/_trace.отрисовка ошибок (1.0 мс) /usr/lib/ruby/gems/1.8/gems/actionpack-3.0.6/lib/action_dispatch/middleware/templates/rescues/_request_and_response.отрисовка ошибок (4.1 мс) /usr/lib/ruby/gems/1.8/gems/actionpack-3.0.6/lib/action_dispatch/middleware/templates/rescues/diagnostics. ошибка при спасении / компоновке (8,4 мс)
На самом деле это ничего не значит для меня. Я понятия не имею, что происходит не так. В настоящее время у меня есть только один контроллер, который выглядит следующим образом:
class SearchEngineController < ApplicationController
def upload
end
def search
@rows = nil
end
# This function will receive the query string from the search form and perform a search on the
# F.I.S.E index to find any matching results
def query
index = Ferret::Index::Index.new :path => "/public/F.I.S.E", :default_field => 'content'
@rows = Array.New
index.search_each "content|title:#{params[:query]}" do |id,score, title|
@rows << {:id => id, :score => score, :title => title}
end
render :search
end
# This function will receive the file uploaded by the user and process it into the
# F.I.S.E for searching on keywords and synonims
def process
index = Ferret::Index::Index.new :path => "public/F.I.S.E", :default_field => 'content'
file = File.open params[:file], "r"
xml = REXML::Document.new file
filename = params[:file]
title = xml.root.elements['//body/title/text()']
content = xml.root.elements['normalize-space(//body)']
index << { :filename => filename, :title => title, :content => content}
file.close
FileUtils.rm file
end
end
Маршрутизация моего приложения имеет следующую настройку: Опять же, все это довольно просто и, вероятно, может быть сделано лучше.
Roularta::Application.routes.draw do
# define all the url paths we support
match '/upload' => 'search_engine#upload', :via => :get
match '/process' => 'search_engine#process', :via => :post
# redirect the root of the application to the search page
root :to => 'search_engine#search'
# redirect all incoming requests to the query view of the search engine
match '/:controller(/:action(/:id))' => 'search_engine#search'
end
Если кто-нибудь может определить, что не так и почему это приложение не работает, пожалуйста, дайте мне знать. При необходимости я могу отредактировать этот редактор и включить дополнительные файлы, которые могут потребоваться для решения этой проблемы.
РЕДАКТИРОВАТЬ мне удалось продвинуться дальше, переименовав одну из функций контроллера. Я переименовал search в create, и теперь я возвращаю ошибки HAML. Возможно, я использовал ключевое слово …?
Ответ №1:
вау, наконец-то найдены решения….
Кажется, я использовал ключевые слова для определения своих действий, и Rails это не понравилось. Это решило проблему 2.
Проблема 1 была решена путем добавления Rails.env= ‘development’ в файл environment.rb