我已经在Windows 8中使用RailsInstaller和postgresql安装了Ruby on Rails。我正试图使用预先存在的应用程序的文件运行rails server
,但收到错误"JRuby或Windows不支持工作模式"。
在我的config/puma.rb文件中,我将worker设置为0,然后得到一个关于windows上不支持的守护进程模式的错误。基本上,每次我改变一些东西,我都会犯更多的错误。
我已经修复了环境变量、gem等(就像在其他帖子中一样),比如"不能在RubyonRails上安装Puma-gem"。有希望在windows机器上运行一个在linux中构建的RoR应用程序吗?
当我为RoR的"博客"示例运行rails服务器时,它工作得很好,所以我知道RoR肯定在windows中工作!
这是我的配置文件/puma.rb。是因为在windows中我没有/var/app文件夹吗??我摆弄过目录等,但都无济于事。
`
#!/usr/bin/env puma
# start puma with:
# RAILS_ENV=production bundle exec puma -C ./config/puma.rb
workers 0
theident = 'nameofthing'
application_path = '/var/app/'+ theident + '.address.com.au/current'
railsenv = 'production'
directory application_path
environment railsenv
daemonize false
pidfile "#{application_path}/tmp/pids/puma-#{railsenv}.pid"
state_path "#{application_path}/tmp/pids/puma-#{railsenv}.state"
stdout_redirect"#{application_path}/log/puma-#{theident}.log"
threads 0, 16
bind "unix:///var/run/puma/" + theident + "_app.sock" `
我已经将这些目录更改为当前路径,现在开始运行"rails server",但localhost:3000是一个不工作的页面。我在SIGUSR1不工作、SIGUSR2不工作等方面遇到错误
JRuby和Windows都不支持"workers"方法,因此最好的解决方案是从puma.rb中删除导致错误的行。在我的情况下,我删除了;
workers Integer(ENV['WEB_CONCURRENCY'] || 2)
所以剩下的我有;
threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 5)
threads threads_count, threads_count
preload_app!
rackup DefaultRackup
port ENV['PORT'] || 3000
environment ENV['RACK_ENV'] || 'development'
on_worker_boot do
# Worker specific setup for Rails 4.1+
# See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
ActiveRecord::Base.establish_connection
end
对您来说可能有所不同,但具体的行将以"workers"