2017-09-01 31 views
0

所以我犯了一个巨大的错误,就是从git中删除一个rails应用程序并将其克隆。现在我坚持不让我的服务器使用rails s运行。无法用rails使用rails启动数据库s

我不断收到以下错误,我不知道如何解决它。

Users/macuser/Desktop/Freelance1/config/application.rb:18:in `initialize': No such file or directory @ rb_sysopen - /Users/macuser/Desktop/Freelance1/config/local_env.yml (Errno::ENOENT) 
    from /Users/macuser/Desktop/Freelance1/config/application.rb:18:in `open' 
    from /Users/macuser/Desktop/Freelance1/config/application.rb:18:in `block in <class:Application>' 
    from /usr/local/lib/ruby/gems/2.4.0/gems/activesupport-5.1.3/lib/active_support/lazy_load_hooks.rb:43:in `execute_hook' 
    from /usr/local/lib/ruby/gems/2.4.0/gems/activesupport-5.1.3/lib/active_support/lazy_load_hooks.rb:35:in `block in on_load' 
    from /usr/local/lib/ruby/gems/2.4.0/gems/activesupport-5.1.3/lib/active_support/lazy_load_hooks.rb:34:in `each' 
    from /usr/local/lib/ruby/gems/2.4.0/gems/activesupport-5.1.3/lib/active_support/lazy_load_hooks.rb:34:in `on_load' 
    from /usr/local/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/railtie/configuration.rb:53:in `before_configuration' 
    from /Users/macuser/Desktop/Freelance1/config/application.rb:16:in `<class:Application>' 
    from /Users/macuser/Desktop/Freelance1/config/application.rb:10:in `<module:SSS>' 
    from /Users/macuser/Desktop/Freelance1/config/application.rb:9:in `<top (required)>' 
    from /usr/local/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/commands/server/server_command.rb:129:in `require' 
    from /usr/local/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/commands/server/server_command.rb:129:in `block in perform' 
    from /usr/local/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/commands/server/server_command.rb:126:in `tap' 
    from /usr/local/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/commands/server/server_command.rb:126:in `perform' 
    from /usr/local/lib/ruby/gems/2.4.0/gems/thor-0.20.0/lib/thor/command.rb:27:in `run' 
    from /usr/local/lib/ruby/gems/2.4.0/gems/thor-0.20.0/lib/thor/invocation.rb:126:in `invoke_command' 
    from /usr/local/lib/ruby/gems/2.4.0/gems/thor-0.20.0/lib/thor.rb:387:in `dispatch' 
    from /usr/local/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/command/base.rb:63:in `perform' 
    from /usr/local/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/command.rb:44:in `invoke' 
    from /usr/local/lib/ruby/gems/2.4.0/gems/railties-5.1.3/lib/rails/commands.rb:16:in `<top (required)>' 
    from /Users/macuser/Desktop/Freelance1/bin/rails:9:in `require' 
    from /Users/macuser/Desktop/Freelance1/bin/rails:9:in `<top (required)>' 
    from /usr/local/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/client/rails.rb:28:in `load' 
    from /usr/local/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/client/rails.rb:28:in `call' 
    from /usr/local/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/client/command.rb:7:in `call' 
    from /usr/local/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/client.rb:30:in `run' 
    from /usr/local/lib/ruby/gems/2.4.0/gems/spring-2.0.2/bin/spring:49:in `<top (required)>' 
    from /usr/local/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/binstub.rb:31:in `load' 
    from /usr/local/lib/ruby/gems/2.4.0/gems/spring-2.0.2/lib/spring/binstub.rb:31:in `<top (required)>' 
    from /usr/local/Cellar/ruby/2.4.1_1/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:68:in `require' 
    from /usr/local/Cellar/ruby/2.4.1_1/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:68:in `require' 
    from /Users/macuser/Desktop/Freelance1/bin/spring:15:in `<top (required)>' 
    from bin/rails:3:in `load' 
    from bin/rails:3:in `<main>' 
+0

你使用git吗? – 7urkm3n

回答

0

当我从堆栈跟踪看,你缺少这个文件:

/Users/macuser/Desktop/Freelance1/config/local_env.yml 

这是一个常见的模式,以避免跟踪一些文件与GIT。例如,database.ymlsecrets.yml。通常会将这些文件添加到.gitignore,以保留您的凭据,另一个机密数据或只是本地设置,这对于其他团队成员而言是私有的。

这就是为什么有示例文件,如database.example.ymlsecrets.sample.yml通常有一个字段,需要填写私人文件。

local_env.yml通常用于为您的应用程序设置一些环境变量(here是一篇关于它的文章)。我想,有这样的事情在你的config/application.rb

config.before_configuration do 
    env_file = File.join(Rails.root, 'config', 'local_env.yml') 
    YAML.load(File.open(env_file)).each do |key, value| 
    ENV[key.to_s] = value 
    end 
end 

所以它试图打开一个不存在的文件,你会得到这个错误。

检查您的项目,也许有local_env.yml的示例文件。如果没有这样的文件,你可以改变ENV文件加载这样的:

config.before_configuration do 
    env_file = File.join(Rails.root, 'config', 'local_env.yml') 
    YAML.load(File.open(env_file)).each do |key, value| 
    ENV[key.to_s] = value 
    end if File.exists?(env_file) 
end 

所以它会检查是否试图打开它之前存在config/local_env.yml

或者您可以简单地添加一个config/local_env.yml文件。

但是,如果你在这个文件中有一些重要的env变量,你可能会在它们被使用的地方得到错误。但我认为找到这些地方不是问题(至少您可以在您的项目中搜索ENV以检查使用env变量的位置)并将所需变量添加到local_env.yml