3

sinatra アプリの設定ファイルをセットアップしようとしましたが、簡単な設定が機能します。(私のコードの puts は "Hello!!" を出力します) しかし、環境ごとに設定を定義できると書かれているこのドキュメントを読みました。試してみましたが、うまくいきません。私は何を間違っていますか?;) 私はこのコードを使用しています:

#settings.yml
#environments: :production, :development
environment: :development

bla: Hello!!

development:
  db_adapter:   "sqlite3"
  db_location:  "db/development"
  db_logfile:   $stdout
  db_loglevel:  :debug
  haml: "format => :html5, :ugly => true"

production:
  db_adapter:   "sqlite3"
  db_location:  "db/production"
  db_logfile:   "log/production_db.log"
  db_loglevel:  :error

#main.rb
#!/usr/bin/ruby

require 'rubygems'
require 'sinatra'             #Webframework
require 'sinatra/config_file' #Config

set :environment, :development
config_file("settings.yml")

puts settings.bla

DataMapper::Logger.new(settings.db_logfile, settings.db_loglevel)
DataMapper.setup(:default, "#{settings.db_adapter}://#{Dir.pwd}/#{settings.db_location}")
...

settings.db_logfile に対して noMethodError が発生します...下手な英語で申し訳ありません;)

EDIT1:わかりました;)これをmain.rbに書き込む必要があります:

set :environment, :development

configure :development do
  set :db_adapter     ,  "sqlite3"
  set :db_location    ,  "db/development"
  set :db_logfile     ,  $stdout
  set :db_loglevel    ,  :debug
  set :haml           ,  :format => :html5
end
4

3 に答える 3

1

昔々のこと...

config.yml ファイルをロードしても何も解決しないと思いますが、私が見たようにメインファイルに構成を設定します。

settings.some_yaml_value の noMethodError について同じ問題があり、その理由はパス引数でした。私はこのように解決しました:

config_file '/config.yml'

/に注意してください

于 2014-09-11T11:18:56.183 に答える
-2

次のように環境を構成します。

configure :production do
  set :db_adapter, "sqlite3"
  set :db_location, "db/production"
  set :db_logfile, "log/production_db.log"
  set :db_loglevel, :error
end

configure :development do
  set :db_adapter, "sqlite3"
  set :db_location, "db/development"
  set :db_logfile, $stdout
  set :db_loglevel, :debug
  set :haml, {:format => :html5, :ugly => true}
end

configure :test do
  ...
end

シナトラのReadmeを参照

于 2012-09-27T14:51:53.420 に答える