Приложение Revel с локальными пакетами в героку

Я пытаюсь развернуть приложение Revel в героку, в котором у меня есть эта структура папок:

+Base
    +app
        +controllers
            -app.go
        +views
        +models
            -user.go
        +routes
    +conf
    +public
    +test
    .godir

В app.go я пытаюсь включить модели и маршруты, делая это:

import("base/app/models")

Я могу запустить приложение локально, и после того, как я смогу использовать models.User. Я пытался сделать много способов импортировать эти локальные пакеты в героку:

import("../models")
import("../models/user")
import("./app/models")
import("./base/app/models")

Всех попыток сейчас не вспомню, но пробую давно и не знаю что делать.

Я использую локально go 1.6 и 1.4, когда нажимаю. И это след, который появляется, когда я запускаю git push heroku master

Counting objects: 93, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (86/86), done.
Writing objects: 100% (93/93), 11.68 KiB | 0 bytes/s, done.
Total 93 (delta 50), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Revel app detected
remote: -----> Using go1.4
remote: -----> Running: go get -tags heroku ./...
remote: can't load package: /tmp/build_02574263f0810eec437968b2e73f635d/.go/src/base/app/controllers/gorp.go:10:2: local import "../models" in non-local package
remote:  !     Push rejected, failed to compile Revel app.
remote: 
remote:  !     Push failed
remote: Verifying deploy...
remote: 
remote: !   Push rejected to ndc-console.
remote: 
To https://git.heroku.com/ndc-console.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/ndc-console.git'

Это происходит с использованием import("base/app/models").

Любое решение?? Спасибо.

ИЗМЕНИТЬ

Я захожу в heroku bash (под управлением heroku run bash) и вижу структуру папок, и это что-то вроде:

bin
dev
more...
app /*This is the base folder*/
    app
        controllers
        views
        models
        routes
    config
    public
    .go /*this is the GOPATH*/

        src
            github.com
            golang.org
            gopkg.in
            base-test /* This name is because I change the original name, from base-test to base... */
            /* IS IT IMPORTANT? */
            /* Inside this folder the app is duplicated */

Таким образом, я тоже пробовал import("base-test/app/models") и тоже включал весь путь от корня (пробуя абсурдные вещи).

Я надеюсь, что это поможет найти решение. Спасибо.


person Eloy Fernández Franco    schedule 29.11.2016    source источник
comment
не используйте импорт относительных путей. Использовать путь пакета absolute_package_path.substr($GOPATH.length)   -  person mh-cbon    schedule 29.11.2016
comment
Спасибо, @mh-cbon, но... я не так хорошо тебя понимаю. Я пытался использовать абсолютный путь или то, что я думаю (как вы можете видеть в моем редактировании). Например, используя import("base/app/models") или import("base-test/app/models"). Можно немного конкретнее, пожалуйста??   -  person Eloy Fernández Franco    schedule 30.11.2016
comment
все пользовательские пакеты должны существовать в GOPATH. Если вы переместите первый app под .go/src, путь к пакету контроллеров будет app/app/controllers.   -  person mh-cbon    schedule 30.11.2016
comment
так что да, правильно, должно было быть absolute_package_path.substr($GOPATH.length + 'src/'.length)   -  person mh-cbon    schedule 30.11.2016
comment
Привет @mh-cbon. Извините, но я продолжаю без понимания. Если я наберу absolute_package_path, я получу ошибку компиляции, то же самое с $GOPATH. Итак, я не могу сделать import(absolute_package_path.substr($GOPATH.length + 'src/'.length))   -  person Eloy Fernández Franco    schedule 30.11.2016
comment
Ok!! Сделанный. Спасибо @mh-cbon, каждый совет приветствуется.   -  person Eloy Fernández Franco    schedule 30.11.2016


Ответы (1)


В порядке!!! Готово!!

Наконец, старое название проекта создавало проблему. Кажется, что когда я меняю имя приложения heroku, heroku не меняет имя папки, когда оно будет скомпилировано... И мне также нужно изменить содержимое файла .godir и установить его как base-test ( старое имя).

Итак, теперь мой импорт выглядит так: import("base-test/app/models").

Спасибо всем.

person Eloy Fernández Franco    schedule 30.11.2016