文件没有出现在Heroku中 - 浏览Heroku内容

Ada*_*vis 2 ruby ruby-on-rails heroku

我在heroku上运行一个应用程序 - 它看起来运行得很好,我可以访问我的数据库.现在,我试图运行'heroku rake db:seed'...运行,直到它在我的代码中达到这一点;

  composersInput = IO.readlines("app\\data\\composers.txt")
  composersInput.length.times do |i|
  name, borndied, nationality, style, gender = composersInput[i].split(':')
  yearBorn, yearDied = borndied.split('-')
  Composer.create!(:name => name, :year_born => yearBorn.to_i, :year_died => yearDied.to_i,
                   :nationality_id => nationality.to_i, :style_id => style.to_i, :gender => gender)
end
Run Code Online (Sandbox Code Playgroud)

当它尝试加载composers.txt时,我收到以下错误"没有这样的文件或目录 - app\data\composers.txt",我非常无能为力.这段代码适用于我的本地副本并且执行没有问题 - 我已经验证了文件composers.txt确实在我的机器上的那个目录中,并且我验证它们被包含在git push to heroku中.

我想知道是否有什么问题.我的IO语法?有没有办法让我浏览我的heroku应用程序的文件结构,以便我可以验证文件确实存在?如果您有任何建议,将非常感谢:)

kar*_*kie 7

heroku控制台是你的朋友.

keith@Lucy:~/code/paperhat (master)$ heroku console
Ruby console for somesite.heroku.com
>> `ls .`
=> "Gemfile\nGemfile.lock\nREADME\nRakefile\napp\nconfig\ndb\nfeatures\ngenerate\nlib\nlog\npublic\nscript\nspec\ntmp\nvendor\n"
Run Code Online (Sandbox Code Playgroud)

它在格式化方面并不令人敬畏,但你至少可以在你的heroku slug上查看,看看发生了什么.顺便说一句,我可能会使用以下内容来获取您的配置文件,而不是您所拥有的:

Rails.root.join("app", "data", "composers.txt")
Run Code Online (Sandbox Code Playgroud)


ced*_*dlb 7

不再支持heroku控制台,而是必须使用"heroku run COMMAND",即

$ heroku run 'ls .'
Run Code Online (Sandbox Code Playgroud)

请注意,这里是单引号(或双引号),而不是heroku控制台中使用的背景.如果使用了反引号(heroku run ls),那么ls命令首先在本地运行,然后将文件列表作为要运行的命令运送到heroku运行...

如果项目中有多个heroku应用程序,例如生产和登台,则可能需要指定要定位的应用程序(在.git/config文件中查找应用程序名称,或运行"heroku apps"):

$ heroku run 'ls -al .' --app awesome-newsom-1234
Run Code Online (Sandbox Code Playgroud)